본문 바로가기

모의해킹/Dreamhack

Type c-j

728x90

• 알아야 할 것!!!!!!

- magic hash (PHP에서 사용하는 특수동작)

'0' == 0를 비교하면 두 개의 자료형이 달라도 데이터만 일치하며 TRUE를 반환한다.(최적의 자료형을 찾는다 => string >> float >> int 형 순이다)

-> A === B을 사용한다

ex) 지수를 통한 인증을 우회하는 방법 : 0e12345 == 0의 결과는 TRUE 

 

 

문제 정보

ID와 Password를 통과를 하며 되는 문제이다.

 

 <?php
    function getRandStr($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
    
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[mt_rand(0, $charactersLength - 1)];
        }
        return $randomString;

    }
    require_once('flag.php');
    error_reporting(0);
    $id = getRandStr();
    $pw = sha1("1");
    // POST request
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $input_id = $_POST["input1"] ? $_POST["input1"] : "";
      $input_pw = $_POST["input2"] ? $_POST["input2"] : "";
      sleep(1);

      if((int)$input_id == $id && strlen($input_id) === 10){
        echo '<h4>ID pass.</h4><br>';
        if((int)$input_pw == $pw && strlen($input_pw) === 8){
            echo "<pre>FLAG\n";
            echo $flag;
            echo "</pre>";
          }
        } else{
          echo '<h4>Try again.</h4><br>';
        }
      }else {
      echo '<h3>Fail...</h3>';
     }
    ?>

3개의 PHP 소스가 있지만 우리가 봐야 할 소스는 check.php 만 보면 된다.

 

 if((int)$input_id == $id && strlen($input_id) === 10){
        echo '<h4>ID pass.</h4><br>';
        if((int)$input_pw == $pw && strlen($input_pw) === 8){
            echo "<pre>FLAG\n";
            echo $flag;
            echo "</pre>";
          }
        } else{
          echo '<h4>Try again.</h4><br>';
        }

그중에 여기 부분을 보자~!

1. ID를 통과하기 위해서는 magic hash을 이용하여 0e123456로 길이를 10자로 맞춰주면 통과를 할 수 있다.

2. PW를 통과하기 위해서는 sha1("1")을 암호화하면 356a129~~ 로 시작된다. 그다음 형변환 356.0이므로, 356으로 시작하는 8글자 문자열을 입력하면 통과를 할 수 있다~!!

 

그렇게 계속 시도를 하다 보면 확률에 따라 flag를 얻을 수 있다~!!~

 

'모의해킹 > Dreamhack' 카테고리의 다른 글

SSTI(취약점 개념)  (0) 2023.11.09
baby-union  (0) 2023.11.08
Broken Buffalo Wings  (0) 2023.11.05
random-test  (0) 2023.11.04
amocafe  (0) 2023.11.03