webhacking.kr - old60

2021. 4. 7. 13:56WarGame/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