본문 바로가기

----WARGAME----/Webhacking.kr

Webhacking.kr 1번 풀이 - Cookie 변조

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

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