3

私は現在、パス (ブラインドではない) 高レベルのカテゴリ SQL インジェクション アプリケーション dvwa を探しています。

生活を楽にするアイデアやツールがあっても、解決策を見つけることができません。

ファンのソースコード形式は次のとおりです。


if (isset($_GET['Submit'])) {
    // Retrieve data

    $id = $_GET['id'];     
    $id = stripslashes($id);      
    $id = mysql_real_escape_string($id);   

    if (is_numeric($id)){

        $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
        $result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );

        $num = mysql_numrows($result);

        $i=0;

        while ($i < $num) {

            $first = mysql_result($result,$i,"first_name");
            $last = mysql_result($result,$i,"last_name");

            echo '<pre>';
            echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
            echo '</pre>';

            $i++;
        }
    }
}

ミッションを実行し、次の構造を持つユーザー テーブル dvwa db にある値を取得します。

+------------+-------------+------+-----+---------+
| Field      | Type        | Null | Key | Default |
+------------+-------------+------+-----+---------+
| user_id    | int(6)      | NO   | PRI | 0       |
| first_name | varchar(15) | YES  |     | NULL    |
| last_name  | varchar(15) | YES  |     | NULL    |
| user       | varchar(15) | YES  |     | NULL    |
| password   | varchar(32) | YES  |     | NULL    |
| avatar     | varchar(70) | YES  |     | NULL    |
+------------+-------------+------+-----+---------+
6 rows in set (0.00 sec)

それからもちろん、(ネット上のどこでも見たように) エンコードされた文字であると言うでしょう。私が理解していることは、はい、メールを異なる方法で書くことができるより多くの文字セットがあります(マルチバイトなど)。しかし、私はあなたを見つけることさえできません。上記のphpフォームコードは次のように理解しています:

すでに最初に mysql_real_escape_string () をバイパスする必要があるため、私の研究は初めてそこに焦点を当てています。たとえば、ゲームの big5 キャラクターを使用すると、それをバイパスすることを意味します... 繰り返しになりますが、おそらくすべてテナイを道で見ましたが、実際にはテストしていません。なんで?

mysql_real_escape_string () をバイパスするとします。php コードによって実行される次のステップを読み続けると、関数を読み取ることができます。

if(is_numeric($id))...

変数の型をチェックします。(さらに、正確な用語を使用するかどうかはわかりませんが、良いです)。これは、ここに引用符を挿入したい場合は、強制数値でなければならないことを意味します.Donc サイズ有名な php 関数に頼ったところ、同じ 2 進値または 16 進値を入力できることに気付きました (ただし、すべての場合で私の後に出力を変換するための関数であり、今では本当にわかりません....)。したがって、最初のアイデアでの私の入力は、引用符を挿入するために 0x27 を取得することでしたが、もちろん、この値は文字列型の出力ではなく整数として解釈されるため、引用符を解釈する方法...問題はこちら側にあると思いますが、私はlargues dint of think ... トラックしか持っていない場合 (Google で調べるように言われたことを除いて、私は 4 日前からやっています ^ ^)、私は興味があります。だからみんな(または女の子)、そのウィルはMaster Sqliと呼ばれていますか?? お時間をいただきありがとうございます...(グーグル翻訳でごめんなさい)

4

1 に答える 1