> For the complete documentation index, see [llms.txt](https://donghyunlee.gitbook.io/write-up/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://donghyunlee.gitbook.io/write-up/wargame/webhacking.kr/old-60-300.md).

# old-60 (300)

첫 화면이다.

![](https://4149640791-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LybinW10qeKqY56a-jw%2F-M2EGYRVvD75swNdKrIU%2F-M2EGjIKr2MmvnAyJCdh%2Fimage.png?alt=media\&token=9b00c8be-2928-4769-9693-e932ec6a0337)

view-source를 클릭해 본 소스는 아래와 같다.

```php
<?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>
```

아래와 같이 PHPSESSID 쿠키 값을 `123`으로 설정해 위 소스의 6번째 줄을 통과한다.

![](https://4149640791-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LybinW10qeKqY56a-jw%2F-M2EGsBV-oUvdoIEu0zg%2F-M2EHVw3gxlFGk0vLzj6%2Fimage.png?alt=media\&token=770c16aa-9b9d-4832-be9c-5cbd9536c399)

새로고침 후 다시 로그인 해 문제에 접속하면 아래와 같이 `Access Denied` 라는 글이 사라져있다.

![](https://4149640791-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LybinW10qeKqY56a-jw%2F-M2EH_lllM1QkAQyVSlJ%2F-M2EHm2RBW1gO4J8bhcj%2Fimage.png?alt=media\&token=71ae1dc6-c94d-4571-adc5-573c29d9ea95)

소스에 존재하는 `sleep()` 함수 덕분에 레이스 컨디션 공격이 가능하다.

크롬 시크릿 창을 열어 아래와 같이 PHPSESSID 쿠키 값을 `456`으로 설정한 후 문제에 접속한다.

![](https://4149640791-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LybinW10qeKqY56a-jw%2F-M2EK_WG66gmuNcPfaBN%2F-M2EKklhYgaAi10fSXA_%2Fimage.png?alt=media\&token=8fe3d741-888b-4758-a02b-632961b89ea8)

우측 시크릿 창을 새로고침 한 순간 1초 안에 좌측 일반 창에서 <https://webhacking.kr/challenge/web-37/?mode=auth>에 접속하면 문제가 풀린다.

![](https://4149640791-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LybinW10qeKqY56a-jw%2F-M2EHokSIC8qrcSJ2Dd0%2F-M2EK9uhwKoA34KQaFC2%2FScreen%20Shot%202020-03-13%20at%2012.19.07%20AM.png?alt=media\&token=9f9b3abd-976c-48a7-b81f-55b990f2d16e)
