query : select 1234 fromprob_giant where 1
<?php
include "./config.php";
login_chk();
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 = @mysql_fetch_array(mysql_query($query));
if($result[1234]) solve("giant");
highlight_file(__FILE__);
?>
if($result[1234]) solve("giant");
쿼리의 결과값이 뭐든 나오면 문제가 해결됩니다. 다만 from과 테이블명이 붙어있고, 그 사이에 get parameter로 받은 값을 넣게 되는데 1글자 이상 넣을 수 없고 캐리지리턴 라인피드 탭 문자는 필터링되고 있습니다. 이는 곧 white space 필터링을 우회하라는 말이 됩니다. white space는 %0a %0b %0c %0d %09 %20 등으로 사용할 수 있습니다.(자세한 내용은 los(lord of sql) level 13 - bugbear 참고)
?shit=%0b |
payload
'Web > LOS (Lord of SQL)' 카테고리의 다른 글
los(lord of sql) level 16 - zombie_assassin (0) | 2018.08.22 |
---|---|
los(lord of sql) level 15 - skeleton (0) | 2018.08.22 |
los(lord of sql) level 13 - bugbear (0) | 2018.08.21 |
los(lord of sql) level 12 - darkknight (0) | 2018.08.21 |
los(lord of sql) level 11 - golem (0) | 2018.08.21 |