webhacking.kr 1번 문제 풀이


webhacking.kr 의 첫번째 문제..


문제접속 : http://webhacking.kr/index.php?mode=challenge&no=1

다음과 같은 화면이 나타난다.


URL 메뉴에 링크가 걸려있어서 클릭하면 다음 페이지로 연결된다.

http://webhacking.kr/challenge/web/web-01/


index.phps 클릭 시 해당문제의 소스가 제공된다.

http://webhacking.kr/challenge/web/web-01/index.phps

 

<?

if(!$_COOKIE[user_lv])

{

SetCookie("user_lv","1");

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>

<?

 

$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]");

 

?>

<br>

<pre>

<a onclick=location.href='index.phps'>----- index.phps -----</a>

</body>

</html>

 

소스를 봤을 때 해당 문제는 Cookie 조작 문제임을 알 수 있다.

 

소스 중 핵심 구문을 살펴보면 다음과 같다.

 1) 숫자 , . 만 허용한다.

if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;

 

2) Cookie 변수 user_lv 6이상이면 user_lv 1이고

User_lv 5를 초과할 경우 level1을 통과할 수 있다.

if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;

if($_COOKIE[user_lv]>5) @solve();

 

결국 5초과, 6미만의 값을 넣으면 된다.

해당 소스에서 피리어드(.)의 입력이 가능하므로 5.5를 입력하도록 하자

 

Cookie를 조작하여 user_lv 값으로 5.5를 입력한다.


Congraturation과 함께 level 통과 및 200점 획득



level clear!!



+ Recent posts