Webhacking.kr 워게임 사이트에 로그인 한 후, 'Challenges' 페이지에 접속한다.
* Login
* Challenges
Challenges 페이지에서 1번을 클릭하면 다음과 같은 1번 문제의 페이지를 볼 수 있다.
페이지 상에서는 별다른 내용을 찾을 수 없으므로 'indexs.php'를 클릭해본다.
다음과 같은 소스가 화면에 출력되는 것을 볼 수 있다.
출력된 소스가 문제 해결을 위한 힌트인 것으로 보이니, 분석해 본다.
위쪽 소스를 보면 'user_lv' 쿠키가 존재하지 않으면 해당 값을 '1'로 설정해주는 소스가 보인다.
1
2
3
4
5
6
7 |
<?
if(!$_COOKIE[user_lv])
{
SetCookie("user_lv","1");
echo("<meta http-equiv=refresh content=0>");
}
?> |
cs |
다음으로 아래의 본문 소스를 분석해본다. 딱 보면 이 부분이 문제 해결을 위한 정답을 가지고 있을 것 같다
1 2 3 4 5 6 7 | <? $password="????"; if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1; if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1; if($_COOKIE[user_lv]>5) @solve(); echo("<br>level : $_COOKIE[user_lv]"); ?> | cs |
IF문이 3개가 존재하는데 아래와 같은 작업을 수행하는 것으로 파악된다.
* 'user_lv' 쿠키 값이 0~9의 숫자로 시작하지 않으면 '1'로 설정한다.
* 'user_lv' 쿠키 값이 6 이상인 경우 '1'로 설정한다.
* 'user_lv' 쿠키 값이 5 초과인 경우 'solve()' 함수를 실행한다.
즉, 문제 해결을 위한 함수로 유추되는 'solve()' 함수를 실행하기 위하여 user_lv의 값을 5~6 사이의 값으로 조정하여 페이지를 요청하면 해결될 것으로 파악된다.
Cookie 값을 변경하여 시도하는 방법에는 여러가지가 있으며, BurpSuite/Paros와 같은 프록시 툴을 이용하여도 되고 웹 브라우저에서 지원하는 플러그인들을 이용하여서도 손 쉽게 변경하여 요청할 수 있다.
* BurpSuite를 사용방법 : http://joont.tistory.com/170
* Chrome 브라우저 용 플러그인 : EditThisCookie
본 사이트에서는 향후 프록시 툴을 계속 사용할 것을 고려하여 BurpSuite를 이용하여 쿠키 변조를 수행한다.
(단지 쿠키 변조만을 목적으로 한다면, 웹 브라우저의 플러그인을 이용하는 것이 신속/간편 하다.)
BurpSuite로 웹사이트로 전달하는 요청을 잡으면 아래와 같이 쿠키 헤더에 'user_lv' 값을 1로 요청하는 것을 확인할 수 있다.
해당 값을 숫자 5~6 사이의 값인 '5.5'로 수정하여 웹사이트를 요청한다.
요청을 제출하면 아래와 같이 "Congratulation!"이 출력되며 Level 1 문제가 해결된다.
- 끝 -
출처 : warsolve.org, http://warsolve.org/w_webhacking.kr/ko-kr/level-1.aspx
'----WARGAME---- > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 5번 풀이 - Directory Traversal, Directory Listing and Code Obfuscation (0) | 2017.07.02 |
---|---|
Webhacking.kr 4번 풀이 - Decode (0) | 2017.07.02 |
Webhacking.kr 3번 풀이 - SQL Injection (0) | 2017.07.02 |
Webhacking.kr 2번 풀이 - Blind SQL Injection (1) | 2017.07.01 |
Webhacking.kr - 로그인 및 회원가입 (0) | 2017.07.01 |