php 7.4로 작성된 페이지입니다.
알맞은 Input 값을 입력하고 플래그를 획득하세요.
플래그 형식은 DH{} 입니다.
<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>
<?php
$flag = 'flag{**Sample**}'
?>
<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 파일에 input칸에 대한 조건문이 있어서 해석해 보았다.
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 이어야 한다.
비슷한 값을 넣어보았다.
아무리 대입을 해봐도 답이 안나와서 생각해보다가 아스키코드를 확인해 보았다.
input1 조건이 7.A보다 작고 7.9보다 커야하기에 표를 확인해 보면 9와 A사이에 기호들이 있는 걸 볼 수 있어서 7.: 7.; 7.= 등등 사이에 있는 기호를 넣어 답을 입력해 보았다.
input1은 맞는 답인거 같다. input2의 조건은 이해가 되지않아 찾아 본 결과
PHP에서는 문자열을 숫자로 변환활 때, 가능한 가장 긴 숫자를 찾는다.
즉, 숫자가 아닌 문자를 만날 때까지 문자열을 숫자로 변환한다.
위에 정보를 토대로 값을 입력해 보면
플래그를 획득할 수 있다!