드림핵 php7cmp4re
php7.4로 작성됐다고 명시되어있어서 google에 php7.4취약점 먼저 찾아봤지만
구글에는 침투목적 밖에 안보여서 php 메뉴얼을 확인해봤습니다.
php 숫자문자열 메뉴얼을 확인하니깐
$foo = 1 + “bob-1.3e3″이면은 TypeError가 나온다는걸 확인하였습니다.
근데 $foo = 1 + “10 Small Pigs” 문자열에 숫자가 먼저나오면 Type error를 일으키지 않는것도 확인
php 메뉴얼 볼 생각한 이유는 문제를 다운 받으니깐 check.php 파일안에 문자열에 관한 코드가 있었음
<?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>";
?>
처음에는 조건식보고 대충 생각하다가 7.A라고 있는거보고 아스키 코드로 푸는거라고 느낌와서 아스키코드 대입하면서 풀어봄
그래서 input_1 < 56 < 55 46 57 < 55 46 65
strlen($input_1) < 4보다 작고 57~65사이의 값을 찾으면된다.
3글자니깐 57~65사이의 부호 아무거나 합쳐서 넣으면된다.
input_1 = 7.:
input_2는 74보다는 작고 “74”보다는 크니깐
“7”은 55 “4” 는 52이고 74보다는 작은 부호를 집어넣으면된다.
input_2는 2글자니깐