[WARGAME] los.rubiya.kr - red_dragon
2022. 8. 16. 21:36ㆍ카테고리 없음
반응형
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\./i', $_GET['id'])) exit("No Hack ~_~");
if(strlen($_GET['id']) > 7) exit("too long string");
$no = is_numeric($_GET['no']) ? $_GET['no'] : 1;
$query = "select id from prob_red_dragon where id='{$_GET['id']}' and no={$no}";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result['id']}</h2>";
$query = "select no from prob_red_dragon where id='admin'"; // if you think challenge got wrong, look column name again.
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['no'] === $_GET['no']) solve("red_dragon");
highlight_file(__FILE__);
?>
id와 no를 get으로 받는다
하지만 id가 7자보다 크면 안된다.
변수 no가 숫자일경우 no를 그대로 반환하고 아닐경우 1을 출력하게 된다.
우선 no의 길이를 확인하기 위해
이런식으로 하면된다. %0a까지 주석처리를 하기 때문에 그 뒤에 오는 숫자는 주석처리가 되지 않아서 no의 길이를 알수있다.
100000000(1억)<no<1000000000(10억) 이다.
이진탐색으로 중간에 오는 값을 찾으면 된다.
반응형