-
[webhacking.kr] old-01 문제 풀이 / write-up정보보안/CTF write-up 2022. 7. 19. 15:10
오랜만에 webhacking.kr에 들어와보니 전체적으로 리뉴얼 된 것 같네요. 처음에 풀 때는 회원가입이랑 로그인부터 문제였던 것 같았는데, 지금은 그렇지는 않네요
Challenge Auth webhacking.kr은 Challenge에서 문제를 풀고 얻은 플래그 값을 Auth 탭에 들어가서 인증을 받으면 되는 방식입니다. 플래그가 없는 경우에는 solve() 함수를 통해서 자동으로 인증이 됩니다.
old-01 문제를 풀어보겠습니다. 단순히 level : 1이라는 문자열만 있고, 아래엔 이 페이지의 소스를 볼 수 있는 링크가 있습니다. 아래의 링크를 눌러 소스를 보겠습니다.
<?php include "../../config.php"; if($_GET['view-source'] == 1){ view_source(); } if(!$_COOKIE['user_lv']){ SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/"); echo("<meta http-equiv=refresh content=0>"); } ?> <html> <head> <title>Challenge 1</title> </head> <body bgcolor=black> <center> <br><br><br><br><br> <font color=white> ---------------------<br> <?php if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1; if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1; if($_COOKIE['user_lv']>3) solve(1); echo "<br>level : {$_COOKIE['user_lv']}"; ?> <br> <a href=./?view-source=1>view-source</a> </body> </html>
가장 상단에는 view-source를 위한 php 소스이고, 중간에는 화면 구성에 대한 소스가 있습니다.
그리고 그 다음의 php 소스를 확인해보면, 문제에 대한 단서들을 확인할 수 있습니다.
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
첫 번째 조건은 user_lv의 쿠키 값이 숫자인지 아닌지 확인합니다. 만약에 숫자가 아닐 경우에 쿠키를 1로 바꾸어줍니다.
if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;
두 번째 조건은 user_lv의 쿠키 값이 4 이상인 경우에 user_lv 쿠키 값을 1로 바꾸어줍니다.
if($_COOKIE['user_lv']>3) solve(1);
세 번째 조건에는 solve() 함수가 있습니다. 이 문제의 목적은 다른 경우의 수를 우회하여 solve() 함수를 실행시켜서 해결할 수 있게하는 것으로 보입니다. 조건문에는 3 초과의 수가 user_lv 쿠키값에 들어있어야한다고 나와있습니다.
웹 브라우저에서 개발자 모드로 들어가면, 쿠키 값을 볼 수도 있고 바꾸어 줄 수도 있습니다.
쿠키 값을 3.5로 바꾸어 주고, 새로 고침을 해주었습니다.
풀고 나니, 체크 표시가 생겼네요!!
반응형'정보보안 > CTF write-up' 카테고리의 다른 글
[Dreamhack Wargame] session-basic 문제풀이 / write up (0) 2022.07.20 [Dreamhack Wargame] devtools-sources 문제풀이 / write-up (0) 2022.07.19 [드림핵] shell_basic 풀이 / write up (0) 2022.02.19 [pwnable.kr] fd 문제 풀이 / write up / pwnable.kr 소개 (0) 2022.02.14 [Write up] FTZ level6 풀이_ 인포샵 bbs (0) 2020.07.20