WeekHack/WebHacking

Webhacking.kr 1번 Cookie 문제

Luke_S 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