๐๏ธ Access
php 7.4๋ก ์์ฑ๋ ํ์ด์ง์ ๋๋ค.
์๋ง์ Input ๊ฐ์ ์ ๋ ฅํ๊ณ ํ๋๊ทธ๋ฅผ ํ๋ํ์ธ์.
ํ๋๊ทธ ํ์์ DH{} ์ ๋๋ค.
๐พ Exploit Algorithm & Payload
> index.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-stop">
<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">
<div class="box">
<h4>Enter the correct Input.</h4>
<p>
<form method="post" action="/check.php">
<input type="text" placeholder="input1" name="input1">
<input type="text" placeholder="input2" name="input2">
<input type="submit" value="์ ์ถ">
</form>
</p>
</div>
<?php
require_once('flag.php');
error_reporting(0);
?>
</div>
</body>
</html>
> 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>
> flag.php
<?php
$flag = 'flag{**Sample**}'
?>
#1
: '/' ํ์ด์ง์์ ๋ค์๊ณผ ๊ฐ์ด input1๊ณผ input2์ ์ ๋ ฅ ํ ์ ์ถํ๋ฉด ๊ฐ์ ํ์ธํ ์ ์์ ๊ฒ์ผ๋ก ์์๋๋ค.
: ๊ทธ๋ฌ๋ ์ด๋ค ๊ฐ์ ์ ๋ ฅํ์ฌ๋ "Try again."์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์ด์ ์ฝ๋๋ฅผ ๋ถ์ํ๋ค.
#2
1) input_1๊ณผ input_2๋ ๊ณต๋ฐฑ์ด์ฌ์๋ ์๋๋ค
2) input_1์ ๋ฌธ์์ด ๊ธธ์ด๋ 4 ๋ฏธ๋ง์ด์ด์ผ ํ๋ค
3) input_1์ ๋ฌธ์์ด ๊ฐ "8" ๋ณด๋ค ์๊ณ "7.A"๋ณด๋ค ์์ผ๋ฉฐ ๋์์ "7.9"๋ณด๋ค ์ปค์ผ ํ๋ค.
4) input_2๋ ๋ฌธ์์ด ๊ธธ์ด๋ 3 ๋ฏธ๋ง, 1 ์ด๊ณผ์ด์ด์ผ ํ๊ณ (3 > input_2 > 1),
๊ฒฐ๊ณผ๊ฐ์ ์ซ์ 74 > input_2, ๋ฌธ์์ด "74" < input_2 ์ด์ด์ผ ํ๋ค.
: check.php ์กฐ๊ฑด๋ฌธ ํด์์ ๋ค์๊ณผ ๊ฐ๋ค.
#3
: input_1์ ๋ฌธ์์ด ๊ฐ "8"๋ณด๋ค ์๊ณ , "7.9"๋ณด๋ค ํฌ๋ฉฐ, "7.A"๋ณด๋ค ์์์ผ ํ๋ค.
: ๋ํ ๋ฌธ์์ด ๊ธธ์ด๊ฐ 4๋ฏธ๋ง์ด์ด์ผ ํ๊ธฐ์ ASCII ์ฝ๋๋ฅผ ์ด์ฉํ๋ค.
: "7." ๋ค์ ์ค๋ ๋ฌธ์๋ "9"๋ณด๋ค ํฌ๊ณ "A"๋ณด๋ค ์์์ผ ํ๋ค. ๋๋ฌธ์ ๋ง์กฑํ๋ ๊ฐ์ 7.: ~ 7.@ ์ด๋ค.
: ๋ฐ๋ผ์ input1์ ๊ฐ์ ์์ฑํ๋ฉด "Good Try."๋ฅผ ๋ง๋ ์ ์๋ค.
#4
: input_2๋ 3 > strlen($input_2 )> 1, 74 > input_2 > "74" ์ด๋ค.
: PHP์์๋ ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ ๋, ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ธด ์ซ์๋ฅผ ์ฐพ๋๋ค.
: ์ฆ, ์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ๋ค.
: ์๋ฅผ๋ค๋ฉด "7a", "7A", "7#", ...์ ๋ฌธ์์ด์ ์ซ์๋ก ํด์๋ ๋, ์ซ์ 74๋ณด๋ค ์๊ฒ ๋๊ณ , ๋ฌธ์์ด 74๋ณด๋ค๋ ํฌ๊ฒ ๋๋ ๊ฒ์ด๋ค.
: ๋๋ฌธ์ ๋ง์กฑํ๋ ๊ฐ์ 7: ~ ...(๋ค์ ASCII ๋ฌธ์๋ค ๋ฑ๋ฑ ๋ค์ํ๊ฒ ๊ฐ๋ฅ)
๐Analysis and results for obtaining the Flag DH{…}
'[Dreamhack]WebHacking > Wargame&CTF' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dreamhack] Level1:Beginner blue-whale (1) | 2024.02.07 |
---|---|
[Dreamhack] Level2: Dream Gallery (0) | 2024.02.03 |
[Dreamhack] Level2: filestorage (0) | 2024.02.02 |
[Dreamhack] Level1: Type c-j (2) | 2024.02.02 |
[Dreamhack] Level1: baby-union (2) | 2024.02.02 |