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

hamayanhamayan's blog

succubus [LORD OF SQLINJECTION]

Lord of SQLInjection

include "./config.php"; 
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); 
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/\'/',$_GET[id])) exit("HeHe");
if(preg_match('/\'/',$_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 = @mysqli_fetch_array(mysqli_query($db,$query)); 
if($result['id']) solve("succubus"); 
highlight_file(__FILE__); 

特徴は以下。

  • id,pwを入力する。以下フィルターがある
    • 'が使えない
  • なんでもいいから出てくるようにする

エスケープする

idに\を入れて、pwにor 1=1 #を入れる。
すると、idの後ろのシングルクオートがエスケープされて、pw=の後ろのシングルクオートまでが文字列扱いになる。
pwは文字列の枠外となるので、好きにSQL文をinjectionできる。