관리 메뉴

Hy0unSa9ng

[Web] php7cm4re 본문

Wargame/Dreamhack

[Web] php7cm4re

Hy0unSa9ng 2026. 4. 26. 16:10

두 개의 input 필드가 있습니다. 두 개의 input 필드에서 어떤 정보를 받으며, 어떻게 동작하는지 php 코드를 통해서 확인해 보겠습니다.

<div class="container">
    <?php
    require_once('flag.php');
    error_reporting(0);
    // 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>";
    ?> 
    </div>

해당 문제는 PHP7의 느슨한 타입 비교(Type Juggling) 취약점을 이용하여 조건문들을 우회하는 문제입니다.

첫번째로, $input_1 조건을 우회해야 합니다. 우회 방법은 아래와 같습니다.

코드 상 조건은 길이가 3 이하이면서, "7.9"보다 크고 "7.A"와 "8"보단 작아야 합니다.

원리는 PHP 7에서는 두 문자열을 비교할 때, 둘 다 숫자형 문자열(ex. "7.9", "8"이면 숫자로 비교하지만, 일반 문자열이 하나라도 섞여 있다면 사전순 비교를 진행합니다.

해법은 $input_1을 숫자가 아닌 일반 문자열로 만들어주면, 숫자의 킈각 아닌 문자의 아스키코드 값으로 비교하게 만들 수 있습니다.

 

두번째로, $input_2 조건을 우회해야 합니다. 우회 방법은 아래와 같습니다.

조건은 길이가 정확히 2자리이어야 하며, 숫자 74보다는 작고 문자열 "74"보다는 커야 합니다.

  • 원리:
    • $input_2 < 74: PHP 7에서 문자열과 정수를 비교하면 문자열을 정수로 자동 변환(intval)합니다.
    • $input_2 > "74": $input_2가 숫자가 아닌 문자를 포함하고 있다면 양쪽 모두 문자열로 취급하여 사전순 비교를 수행하게 됩니다.
  • 해법: 숫자로 시작하되 뒤에 문자를 붙여서 PHP가 이를 일반 문자열로 취급하도록 속이면 됩니다. (ex. 7A)

위 방법으로 풀이하시면 정상적으로 풀이를 할 수 있으며, Flag를 받으실 수 있습니다.

참고하면 좋을 자료

'Wargame > Dreamhack' 카테고리의 다른 글

[Web] Secret Data  (0) 2026.04.26
[Web] 막창 좋아하세요? 🌱  (0) 2026.04.26