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

hamayanhamayan's blog

zombie [LORD OF SQLINJECTION]

Lord of SQLInjection

<?php
include "./config.php";
login_chk();
$db = dbconnect("zombie");
if(preg_match('/rollup|join|ace|@/i', $_GET['pw'])) exit("No Hack ~_~");
$query = "select pw from prob_zombie where pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['pw']) echo "<h2>Pw : {$result[pw]}</h2>";
if(($result['pw']) && ($result['pw'] === $_GET['pw'])) solve("zombie");
highlight_file(__FILE__);

特徴は以下。

  • pwが入力可能
    • rollup,join,ace,@がフィルタリング
  • 引っ張ってきたpwと入力したpwが等しいかを判定

さっきと同じっぽいが、aceが使えないせいでreplaceが使えなくなっている。
replaceの代わりとなるものは無いだろうか…

Quine SQL query

replaceの代わりを探したが、無かったので、解説見てしまった。

なんと。そんなやり方が。
[Lord of SQL Injection] LoS - zombie 문제풀이 | mingzzi
ここで書かれている表を見るのが一番わかりやすいだろう。

information_schema.processlistには現在動いているスレッドについての情報が書かれている。
しかも、呼び出した自身の情報をちゃんと入ってるので、そこから実行SQL文をぶっこ抜いてこようという作戦。