SWLUG/CTF ๋ฌธ์ œ ํ’€์ด (2)

[Dreamhack/๋“œ๋ฆผํ•ต] php7cmp4re

waterproof 2024. 4. 28. 19:56


 

1. ๋ฌธ์ œ ์›น ํŽ˜์ด์ง€

 

 

 

 

์ฒ˜์Œ์œผ๋กœ ๋‚˜์˜ค๋Š” ํŽ˜์ด์ง€๋Š”, input1๊ณผ input2๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ œ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

์ด ํŽ˜์ด์ง€ ์ด์™ธ์— ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋Š” ์—†๋‹ค.

 

 

 

input1๊ณผ input2์— ๊ฐ๊ฐ 1์„ ์ž…๋ ฅํ•˜๊ณ  ์ œ์ถœ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด์•˜๋‹ค.

 

 

 

 

/check.php ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉด์„œ,

"Try again"์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์“ฐ์—ฌ์ง„ ์›นํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

 

์ฒ˜์Œ ํŽ˜์ด์ง€ (์ž…๋ ฅ ํŽ˜์ด์ง€)

 

์ž…๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›นํŽ˜์ด์ง€

 

๋‘ ํŽ˜์ด์ง€ ๋ชจ๋‘ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ํŠน์ด์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค.

 

 

 

2. ๋‹ค์šด๋กœ๋“œ ๋ฌธ์ œ ํŒŒ์ผ

 

 

 

๋‹ค์šด๋ฐ›์€ zip ํŒŒ์ผ ์•ˆ์—๋Š” 3๊ฐœ์˜ php ํŒŒ์ผ์ด ์žˆ๋‹ค.

 

 

โญ check.php

<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">
          <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>

 

check.php ํŒŒ์ผ์— ๋‚ด๊ฐ€ ์›น ํŽ˜์ด์ง€์— ์ž…๋ ฅํ•œ ๊ฐ’(input1, input2)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์ด ์ ํ˜€์žˆ์—ˆ๋‹ค.

 

 

 

 

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>";

 

ํŠนํžˆ ์ด ๋ถ€๋ถ„์„ ๋ณด๋ฉด input1, input2 ๊ฐ’์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ FLAG ๊ฐ’์ด ๋‚˜์˜ค๋Š” ์กฐ๊ฑด์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

FLAG ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ ค๋ฉด,

 

1. $input_1์˜ ๊ธธ์ด๊ฐ€ 4๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค.
2. $input_1์ด "8"๋ณด๋‹ค ์ž‘๊ณ , "7.A"๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ "7.9"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.
3. $input_2์˜ ๊ธธ์ด๊ฐ€ 3๋ณด๋‹ค ์ž‘๊ณ , 1๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.
4. $input_2๊ฐ€ 74๋ณด๋‹ค ์ž‘๊ณ , "74"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.

 

 

์ด ์กฐ๊ฑด๋“ค ์ค‘์—์„œ 2๋ฒˆ๊ณผ 4๋ฒˆ์ด ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

2๋ฒˆ์—์„œ๋Š” "7.A"๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฐ’์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชฐ๋ž๊ณ ,

4๋ฒˆ์—์„œ๋Š” 74๋ณด๋‹ค ์ž‘๊ณ , "74"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค๋Š” ๋ง์„ ์ดํ•ด๋ฅผ ๋ชป ํ–ˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ–ˆ๋‹ค.

 

 


 

์ด ๋ฌธ์ œ๋Š” php๊ฐ€ ascii๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•œ๋‹ค๋Š” ๊ฐœ๋…์„ ์ด์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 0123456789abcdefghigklmnopqrstuvwxyz... ์ˆœ์„œ๋กœ ๋น„๊ต๊ฐ€ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

๋”๋ณด๊ธฐ

์•„์Šคํ‚ค์ฝ”๋“œ ๋ณ€ํ™˜ ํ‘œ

 

 

 

 

 

ascii ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜ํ•ด์„œ ๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด,

" 2. $input_1์ด "8"๋ณด๋‹ค ์ž‘๊ณ , "7.A"๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ "7.9"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค." --> ์ด ์กฐ๊ฑด์„ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

7.9 < input_1 < 7.A๋ฅผ ๋งŒ์กฑํ•˜๋Š” input_1์˜ ๊ฐ’์€

7.:, 7.;, 7.<, 7.=, ..., 7.@ ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

"4. $input_2๊ฐ€ 74๋ณด๋‹ค ์ž‘๊ณ , "74"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค."๋ฅผ ํ•ด์„ํ•˜์ž๋ฉด,

๋ฌธ์ž์—ด "74"๊ฐ€ ascii ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์‹ญ์ง„์ˆ˜ ๋ณ€ํ™˜ํ•˜๋ฉด ์ˆซ์ž 5552๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

๋‹ค์‹œ ์กฐ๊ฑด์„ ๋ณต๊ธฐํ•˜์ž๋ฉด,

 

1. $input_1์˜ ๊ธธ์ด๊ฐ€ 4๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค.
2. $input_1์ด "8"๋ณด๋‹ค ์ž‘๊ณ , "7.A"๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ "7.9"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.
3. $input_2์˜ ๊ธธ์ด๊ฐ€ 3๋ณด๋‹ค ์ž‘๊ณ , 1๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.
4. $input_2๊ฐ€ 74๋ณด๋‹ค ์ž‘๊ณ , "74"๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.

 

 

์ด์—ˆ๋Š”๋ฐ,

 

input_1์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ž…๋ ฅ๊ฐ’์€: [๊ธธ์ด๊ฐ€ 4๋ณด๋‹ค ์ž‘์•„์•ผ ํ•จ] + [7.:๊ณผ 7.@๋ฅผ ํฌํ•จํ•˜๋Š” ์‚ฌ์ž‡๊ฐ’]

input_2์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ž…๋ ฅ๊ฐ’์€: [๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ๊ณ  3๋ณด๋‹ค ์ž‘์•„์•ผ ํ•จ] + [74๋ณด๋‹ค ์ž‘๊ณ  5552๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค]

 

์œ„์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ input_1์— 7.:

input_2์— :: ๋ฅผ ๋„ฃ์–ด์„œ ํ’€์–ด๋ณด์•˜๋‹ค.

 

 

 

ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

 

์ •๋‹ต!

 


 

์ฐธ๊ณ 

 

https://blog.naver.com/dlrkdtks135790/223403452549

https://blog.naver.com/d0r1m4nsblog/223352197088