2

クライアント提供のブロックに次のコードがあります。

$user = $_POST['user'];

$sql = "SELECT * FROM users WHERE user = '" . $user . "'";

$dbh->query($sql);

また、このコードは現在画面に何もエコーされないため、複数のユーザーを選択しても役に立ちません。それはクライアントに何も視覚的に表示しません。

これが注入されやすいことは私には明らかですが、これがどのように機能するかをクライアントに示す方法を見つけることができません。テーブルを削除しようとしましたが->query()、一度に1つのステートメントしか許可されていないようです。

これが私がこれまでに試したこと ' OR 1=1; DROP TABLE users; SELECT * FROM users WHERE 1='1ですが、それはうまくいきません。

4

4 に答える 4

2

SLEEP(1000)接続プールを排気するために複数回注入することができます。または、非常に複雑な式を使用してCPU負荷を上げることもできます。

派生テーブルがたくさんあると、メモリが不足することさえあります。

于 2012-06-27T20:55:43.113 に答える
1

データベースクエリを精査するのに十分なことをしていませんでした。スクリプト内の(エコーなしの)メソッドはブラインドインジェクションと呼ばれ、テイクオーバーまたはインジェクトを実現することは依然として非常に可能です。

SqlMapなどの自動SQLインジェクションツールを使用してみてください。クエリの結果に驚かれることでしょう。unixwizのいくつかの例をクエリに対して試すこともできます。それらは彼の目標にかなり特有ですが、その背後にある全体的な理論と証拠は健全です。

于 2012-06-27T20:43:39.113 に答える
0

以下を注入するのはどうですか?

"' OR 1'"
于 2012-06-27T20:29:01.130 に答える
0

切り捨て;

' or 1=1; truncate table users; --

落とす ;

 ' or 1=1; drop table users; --

できると思います。

于 2012-06-27T20:59:04.417 に答える