php7cmp4re

2024. 11. 5. 13:30·DreamHack/WEB

 

 

 

 

 

 

 

 

 

 

 

 

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>php7cmp4re</title>
</head>
<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="/">php7cmp4re</a>
        </div>
        <div id="navbar">http://host3.dreamhack.games:10711/
          <ul class="nav navbar-nav">
            <li><a href="/">Index page</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    <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> 
</body>
</html>

 

if 문을 전부 우회하면 될 거 같다.

 

 

 

 

 

if($input_1 != "" && $input_2 != "")

 

input_1과 input_2 가 둘 다 빈 문자열이 아닌 경우에 다음 조건으로 넘어간다.

 

 

 

 

if(strlen($input_1) < 4)

 

input_1의 문자열 길이가 4보다 작은지 확인한다.

 

 

 

if($input_1 < "8" && $input_1 < "7.A" && $input_1 > "7.9")

 

input_1의 문자열 "8" 보다 작은지 확인을 한다.

그리고

input_1 < "7.A" -> 문자열 "7.A" 보다 작은지 확인한다.

input_1 > "7.9" -> 문자열 "7.9" 보다 큰지 확인한다.

결론적으로 "7.9" , "7.A" 사이의 문자열 이어야 한다.

 

PHP에서는 문자열 비교를 할 때 각 문자열의 ASCII 값에 기반하여  문자 단위로 비교를 수행한다.

 

ASCII 값으로 나열을 한다면

"7.9" -> 55 46 57

이 되는데 여기서  55 -> '7' , 46 -> '.' , 57 -> '9' 이런 식으로 ASCII 값이 나온다.

 

"7.A" -> 55 46 65

 

그렇다면 55 46 58으로 값을 올려보면 if문을 우회할 수 있다.

if(strlen($input_2) < 3 && strlen($input_2) > 1)

 

strlen으로 input_2 길이가 3보다 작은지 확인하고 1보다 큰지 확인한다.

 

 

 

if($input_2 < 74 && $input_2 > "74")

 

마지막으로 input_2 가 숫자 74 보다 작은지 확인하고 문자열 "74"보다 큰지 확인한다.

 

PHP에서는 문자열과 숫자를 비교할 때 문자열을 숫자로 받아들여 비교를 한다.

 

앞부분부터 읽어 들이기에

 

만약 "a05"라고 대입을 하면 비교할 때 0으로 받아들이게 된다.

 

"994a"라고 하는 경우에는 994로 변환이 된다.

 

따라서 알맞은 값을 넣으면 74 보다 작은 수를 충족시킬 수 있다.

 

문자열 "74"을 비교하기 위해서는 16진수로 변환을 해야 비교시키기 편하다.

 

"74" -> (h) 37 34

 

앞에 문자가 오고 "74" 보다 hex 값이 높으면 if 문을 다 우회할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

'DreamHack > WEB' 카테고리의 다른 글

sql injection bypass WAF  (0) 2024.10.29
blind sql injection advanced  (0) 2024.10.23
command-injection-chatgpt  (0) 2024.10.23
error based sql injection  (0) 2024.10.18
simple_sqli_chatgpt  (0) 2024.10.17
'DreamHack/WEB' 카테고리의 다른 글
  • sql injection bypass WAF
  • blind sql injection advanced
  • command-injection-chatgpt
  • error based sql injection
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • 모의해킹 (18)
      • CTF (22)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
      • Mobile_security (13)
        • Drozer_Android (4)
        • Frida_Android (1)
        • IOS (1)
        • tool (1)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    webhacking.kr
    CTF
    Linux wargame
    OSINT
    php wrapper
    리눅스 워게임
    Linux
    lfi
    정보보안기사
    php
    bandit30
    모의해킹
    bandit18
    Frida
    url encode
    cookies
    Dreamhack
    bandit20
    drozer
    워게임
    bandit17
    overthewire
    insecurebankv2
    bandit
    Android
    wargame
    난독화
    sql injection
    webhacking
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
php7cmp4re
상단으로

티스토리툴바