[Dreamhack CTF] php7cmp4re

Sungwuk·2024년 9월 19일
0

dreamhack

목록 보기
4/17

❓ 스트링 범위를 구하여 입력값을 맞추는 문제

php 7.4? 뭔지 모른다. 바로 코드를 보자

index.php는 정말 인풋 태그랑 submit 태그만 있어서 굳이 리뷰하지 않겠다.

check.php에서 입력값 검증 부분을 확인하자

    // POST request
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $input_1 = $_POST["input1"] ? $_POST["input1"] : "";
      $input_2 = $_POST["input2"] ? $_POST["input2"] : "";
      sleep(1);

      if($input_1 != "" && $input_2 != ""){
        if(strlen($input_1) < 4){
          if($input_1 < "8" && $input_1 < "7.A" && $input_1 > "7.9"){
            if(strlen($input_2) < 3 && strlen($input_2) > 1){
              if($input_2 < 74 && $input_2 > "74"){
                echo "</br></br></br><pre>FLAG\n";
                echo $flag;
                echo "</pre>";
              } else echo "<br><br><br><h4>Good try.</h4>";
            } else echo "<br><br><br><h4>Good try.</h4><br>";
          } else echo "<br><br><br><h4>Try again.</h4><br>";
        } else echo "<br><br><br><h4>Try again.</h4><br>";
      } else{
        echo '<br><br><br><h4>Fill the input box.</h4>';
      }
    } else echo "<br><br><br><h3>WHat??!</h3>";

if 문 성립 조건을 보면

  • $input_1은 스트링 길이가 4글자 이하
  • $input_1 < "8"
  • "7.9" < #input_1 < "7.A"

문자열 '8' 즉 정수값 56보다 이하라는 것이다.

그럼 "7.9"는 뭔대? -> 55 46 57
"7.A" = 55 46 65 이다.

그럼 우리는 55 46 58을 찾으면 7.: 이다

그럼 input2에 대해서

  • input2는 2글자이고
  • input2 < 74 && input2 > "74" == 55 52

chr(73)을 해보면 I가 나온다. 그레서

7.: 과 II를 입력하면 정답을 찾을 수 있다.

profile
보안전문가 꿈나무

0개의 댓글