반응형
https://dreamhack.io/wargame/challenges/1113
문제 서버로 들어가니까
웹페이지 하나 나온다.
개발자모드 봐도 특별한게 없어서 다운받은 문제파일 세개(php파일)을 열어보았다.
<?php
$flag = 'flag{**Sample**}'
?>
flag파일인데 별 의미 없어보임
<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>
얘는 index인데 개발자모드에서 까본 프론트엔드 코드인 것 같아서 얘도 의미 없어보임
<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파일에서 input값을 찾아야 될 듯 싶다.
아무래도
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>';
}
이쪽이 flag 관련 부분일 듯
해석해보면 input1이 4글자 미만이고 8보다 작고 7.A보다 크고 7.9보다는 크다
input2는 길이가 3보다 작고 1보다 커야된다고 한다. 길이가 아마 2여야할듯
그리고 숫자 74보다는 작고 문자열 74보다는 커야 flag가 나온다고 한다.
일단 7.A랑 7.9가 대체 뭔지? 모르겠어서 찾아보니 이 두 숫자가 아스키 코드라 이걸 십진수로 바꿔서 하는 것 같다. ""안에 있으니..
https://ko.calc-site.com/bases/ascii
위에 사이트에서 7.9랑 7.A랑 변환해 보았다.
554657에서 554665 사이의 숫자를 아스키 코드로 바꿔야 될 것 같다.
554660을 바꿔보자
7.<
이걸 input1로 하도록 한다.
input2도 동일한 방법으로 74를 십진수로 변환한다.
따라서 input2는 5552 보다 커야됨
input2는 두글자여야하니까
input2는 7<로 결정..
답이 나왔다.
반응형
'학회_공부해요 > 워게임' 카테고리의 다른 글
[Dreamhack] Write up - pathtraversal (0) | 2024.07.08 |
---|---|
[SuNiNaTas(써니나타스)] Write up - 6번 (0) | 2024.05.28 |
[Dreamhack] Write up - Windows_Search (0) | 2024.05.14 |
[SuNiNaTas(써니나타스)] Write up - 5번 (0) | 2024.05.14 |
[Dreamhack] Write up - Basic_Forensics_1 (0) | 2024.05.08 |