-
Webhacking.kr 1번 Cookie 문제WeekHack/WebHacking 2019. 3. 15. 02:15반응형SMALL
안녕하세요. Luke입니다. Webhacking.kr 1번 문제 쿠키문제를 가져왔습니다. 해당 문제는 예전에 한번 푼적이 있는데 Webhacking.kr 올클리어를 위해서 계정 다시 파고 1번부터 다시 풀고 있습니다. Weekhack 진행하고 난 뒤에 이 문제 풀이를 포스팅한적 없어서 다시 한번 풀이합니다.
일단 1번 문제를 들어가면 아래 그림과 같이 나오게 됩니다. 아래 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>간단히 php소스를 해석해보겠습니다.
1. user_lv 쿠키가 없을 경우 user_lv쿠키를 생성해 1이라는 값을 저장합니다.
2. user_lv 쿠키가 0-9가 아닐 경우 user_lv 쿠키를 1로 변경합니다.
3. user_lv 쿠키가 6이상일 경우 user_lv 쿠키를 1로 변경합니다.
4. user_lv 쿠키가 5보다 클 경우 문제가 풀리게 됩니다.
그럼 해당 소스에서 알 수 있었던 것은 5보다 크나, 6이상은 아닌 수를 찾아야 합니다. 자연수에서 찾는다면 그런 수는 없겠으나, 소수까지도 생각해보면 무수히 많은 수가 나오게 됩니다. 저는 그 중 가장 가운데 값인 5.5를 user_lv쿠키 값에 넣어보았습니다.
그러고 나서 새로고침하니...
문제가 풀리게 되었습니다!
반응형LIST