web/LOS
[LOS] giant
Tyojong
2025. 8. 11. 21:44
<?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__);
?>
문제 목표
if($result[1234]) solve("giant");
1234를 출력하면 문제가 해결된다.
if(strlen($_GET[shit])>1) exit("No Hack ~_~");
한글자만 허용하며
if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe");
공백, \n, \r, \t 를 필터링한다.
문제 해결
from과 테이블명 사이에 공백만 주면 1234가 출력되어 해결된다.
필터링되는 개행, 공백 제외 아스키코드표를 보니 사용할 수 있는것을이 있다. %이후 아스키값을 보내면 사용할 수 있다.
Vertical Tab을 사용해 문제를 해결할 수 있다.
?shit=%0B