shit
의 위치<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(strlen($_GET[shit])>1) exit("No Hack ~_~");
if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe");
$query = "select 1234 from{$_GET[shit]}prob_giant where 1";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result[1234]) solve("giant");
highlight_file(__FILE__);
?>
소스 코드부터 매우 간결하다. 공백을 제외하면 별다른 필터링도 보이지 않는다.
하지만 이상한 위치에 들어가는 shit
이라는 특이한 파라미터를 받고 있다.
진짜 어렵게 생각할 필요가 없다.
주어진 쿼리로 제대로 동작하는 쿼리를 만들어보면 select 1234 from prob_giant where 1
이다.
따라서 shit
부분에 공백이 들어가면 된다.
따라서 shit=%0b
이런 식으로 공백을 우회해주면 문제는 풀리게 된다.
https://los.rubiya.kr/chall/giant_18a08c3be1d1753de0cb157703f75a5e.php?shit=%0b