webhacking.kr - old60
2021. 4. 7. 13:56ㆍWarGame/webhaking.kr
처음 접속하면 위와 같이 뜨는데,
코드를 확인해보면
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
login_chk();
echo "Your idx is {$_SESSION['idx']}<hr>";
if(!is_numeric($_COOKIE['PHPSESSID'])) exit("Access Denied<br><a href=./?view_source=1>view-source</a>");
sleep(1);
if($_GET['mode']=="auth"){
echo("Auth~<br>");
$result = file_get_contents("./readme/{$_SESSION['idx']}.txt");
if(preg_match("/{$_SESSION['idx']}/",$result)){
echo("Done!");
unlink("./readme/{$_SESSION['idx']}.txt");
solve(60);
exit();
}
}
$p = fopen("./readme/{$_SESSION['idx']}.txt","w");
fwrite($p,$_SESSION['idx']);
fclose($p);
if($_SERVER['REMOTE_ADDR']!="127.0.0.1"){
sleep(1);
unlink("./readme/{$_SESSION['idx']}.txt");
}
?>
<html><head><title>Challenge 60</title></head><body><a href=./?view_source=1>view-source</a></body></html>
?mode=auth 인자를 주면
readme(flag)를 읽어옵니다. 근데 이 과정에서 127.0.0.1이 아니면 바로 문서를 삭제해버리기 때문에 race condition 을 이용해서 풀어야합니다.
최 상단에서 쿠키가 숫자로만 이루어져 있어야 하니 쿠키를 정수로 수정해주고, 1. 크롬, 2.파이어폭스로 접속합니다.
(처음에 숫자로 쿠키 바뀌면 세션 초기화돼서 로그인 다시해야합니다)
크롬 새로고침하고 바로 firefox 새로고침하면
풀이가 가능합니다 :)
'WarGame > webhaking.kr' 카테고리의 다른 글
webhacking.kr - old22 (0) | 2021.04.11 |
---|---|
webhacking.kr - old52 (0) | 2021.04.10 |
webhacking.kr - old53 (0) | 2021.04.07 |
webhacking.kr - old35 (0) | 2021.04.06 |
webhacking.kr - old8 (0) | 2021.04.04 |