query : select id from prob_succubus where id='' and pw=''
<?php
include "./config.php";
login_chk();
dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/\'/i', $_GET[id])) exit("HeHe");
if(preg_match('/\'/i', $_GET[pw])) exit("HeHe");
$query = "select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysql_fetch_array(mysql_query($query));
if($result['id']) solve("succubus");
highlight_file(__FILE__);
?>
if($result['id']) solve("succubus");
쿼리의 결과값이 뭐든 나오면 문제가 풀립니다. id와 pw필드에 싱글쿼터를 필터링하고 있습니다. 우리는 \(백슬래시)를 적절히 이용하여 이 문제를 해결할 수 있습니다. id 파라미터에 \를 넣게되면 id 필드를 닫는 싱글쿼터가 문자열로 인식되어 pw 필드를 여는 싱글쿼터까지(' and pw=') 문자열로 인식되게 됩니다. 이후 우리가 pw 파라미터에 넣어주는 값은 문자열로 인식되는 필드를 벗어나게 됩니다.
?id=\&pw=||1%23
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 14 - giant (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 |