<?
sleep(1);
if(eregi("[0-9]",$_COOKIE[PHPSESSID])) exit("Access Denied<br><a href=index.phps>index.phps</a>");
if($_GET[mode]=="auth")
{
echo("Auth~<br>");
    $f=@file("readme/$_SESSION[id].txt");
    for($i=0;$i<=strlen($f);$i++)
        {
        $result.=$f[$i];
        }
    if(eregi("$_SESSION[id]",$result))
    {
    echo("Done!");
    @unlink("readme/$_SESSION[id].txt");
    @clear();
    exit();
    }
}
$f=@fopen("readme/$_SESSION[id].txt","w");
@fwrite($f,"$_SESSION[id]");
@fclose($f);
if($_SERVER[REMOTE_ADDR]!="127.0.0.1")
{
sleep(1);
@unlink("readme/$_SESSION[id].txt");
}
?>
Sleep 이 있는걸 보아 exec time을 또 재야될 삘이다.
PHPSESSID에 0-9가 있으면 디나이라는데 이건 진짜 말도 안된다. 어떻게 세션에 숫자가 없을 수가 있지 하는 생각을 가지며 일단은.. 차분히 생각을 해보자..
잘보면 호스트가 아닐 경우에 1초간 기다렸다가 session[id].txt를 지운다고 되어 있다. 1초보다 내가 빨리 리퀘스트 주면 되지 않을까?
지워지기 전에 읽게 하면 나의 승리인것 같다.
브라우저로 빨리 쏘게 하고 싶은데 페이지 자체 sleep 이 있기때문에,
일단 쿠키의 PHPSESSID를 aaaaaaaaaaaaaaaaaa로 전부 수정했다.
그리고 인증을 딴상태에서 python script를 계속 해당페이지를 호출하게 해놓고,
다시 쿠키의 PHPSESSID를 bbbbbbbbbbbbbbbbbb로 바꾸고 브라우저로 들어가서 auth를 호출하게 했다.
Auth~<br>Done!<script>alert('Congratulation!');</script><center><h1><br><br><hr>
<font color=gray>You have cleared the 60 problems.</font><br><br><font color=gre
en><b>Score + 300</b></font><br><hr></h1></center>
개인적으로 이 문제에 대한 설명은 이 홈페이지가 가장 잘 되어 있는 것 같다.