Season 1/워게임 [Webhacking.kr] Old - 60 Write Up 작성자 - LRTK 기능을 알 수 없는 페이지가 나왔다. <?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"); } ?> 코드를 보니, 정해진 text의 내용과 내 세션이 같으면 flag를 획득할 수 있는 것으로 판단된다. 코드를 나눠서 분석을 하였다. if(!is_numeric($_COOKIE['PHPSESSID'])) exit("Access Denied<br><a href=./?view_source=1>view-source</a>"); is_numeric 함수가 뭔지 몰라서 검색하니, 값이 숫자인지를 확인하는 함수였다.위 코드는 쿠키값이 숫자가 아니면, Access Denied를 출력하는 코드였다. PHPSESSID의 값을 1로 변경했더니, Access Denied가 출력이 안되었다. $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"); } 쿠키 값이 숫자인 상태로 서버에 페이지를 요청하면, IP가 127.0.0.1이 아닌 접속은 1초 뒤에 생성된 세션이 들어있는 파일을 삭제한다. 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(); } 쿠키값이 숫자인 채로 Get메소드로 mode=auth를 넘기면, 세션이 들어있는 파일을 읽어서 현재 세션과 같으면 Flag를 출력한다. 나는 1초라는 시간을 이용하기로 하였다.두 개의 브라우저 세션 쿠키를 숫자로 변경하여, 웨일이 문제 페이지에 접속하여 파일을 생성 후 1초라는 로딩 시간동안 크롬에선 서버에 Get메소드로 ?mode=auth를 전달하여 웨일 때문에 생성된 파일을 읽어들어서 Flag를 획득하였다. 이러한 방법이 레이스 공격이다. 공유하기 게시글 관리 MSS 'Season 1 > 워게임' 카테고리의 다른 글 [Webhacking.kr] Old - 3 Write Up (0) 2021.05.28 suninatas/웹/3번 문제풀이 (0) 2021.05.28 [Webhacking.kr] Old - 49 Write Up (0) 2021.05.27 [Webhacking.kr] Old - 46 Write Up (0) 2021.05.27 [Webhacking.kr] Old - 11 Write Up (0) 2021.05.27 Contents 당신이 좋아할만한 콘텐츠 [Webhacking.kr] Old - 3 Write Up 2021.05.28 suninatas/웹/3번 문제풀이 2021.05.28 [Webhacking.kr] Old - 49 Write Up 2021.05.27 [Webhacking.kr] Old - 46 Write Up 2021.05.27 댓글 0 + 이전 댓글 더보기