본문 바로가기

HackCTF/web

HackCTF - Guess me

 

링크에 들어가면 다음과 같은 사이트가 나온다

 

이 문제는 extract 취약점을 이용하는 문제이다

 

extract 로 내가 원하는 값으로 변수 내용을 바꿀 수 있다

 

말로는 이해하기 어려우니 문제를 풀어보자

 

<?php
      $filename = 'secret.txt';      
      extract($_GET);
      if (isset($guess)) {
        $secretcode = trim(file_get_contents($filename));  // secret.txt에 내용을 가져와 공백을 없애고 $secretcode안에 넣는다
        if ($guess === $secretcode) {     // $guess 랑 $secretcode가 같으면 플래그 출력
          $flag = file_get_contents('flag.txt');
          echo "<p>flag is"." $flag</p>";
        } else {
          echo "<p>비밀 코드는 $guess (이)가 아닙니다. </p>";
        }
      }
?>

코드를 그대로 가져오고 유심히 봐야할 곳을 주석으로 설명해놨다

 

우리는 secret.txt 안에 내용을 모르기 때문에 $secretcode를 알기 힘들다

 

그래서  extract 를 이용해 $filename 를 바꿔 $secretcode 를 바꾸는 것이다

 

첫번째 주석을 보자

 

$filename을 바꿔주면 우리가 바꿔준 이름의 파일 내용을 가져와야 하는데

파일 이름이 없기 때문에 $secretcode 에는 아무런 값이 들어가지 않는다

 

그래서 두번째 주석을 검사할때 guess에 아무런 값을 주지 않으면 풀릴 것이다

 

 

 

 

 

'HackCTF > web' 카테고리의 다른 글

HackCTF - login  (0) 2021.07.09
HackCTF - Read File  (0) 2021.07.09
HackCTF - 보물  (0) 2021.07.08
HackCTF - Button 문제  (0) 2021.07.08
HackCTF - Hidden  (0) 2021.07.08