web-dev-qa-db-ja.com

SQLインジェクション:すべてのテーブルを削除

いくつかの脆弱性スキャナーを使用して私のサイトをチェックしたところ、ブラインドSQLインジェクションのインスタンスが返されました。ただし、アドレスバーに次のように入力してこの脆弱性を悪用しようとしても、何も起こりません。

http://www.example.com/articles.php?id=-1' or 68 = '66; DROP ALL TABLES; --

これが機能しない理由はわかりません。すべてのテーブルを削除するためにアドレスバーに入力する必要がある正しいテキストは何ですか(そして、はい、これをサイトのバックアップコピーでテストしています)?

13
Pamela

Webアプリケーションのvast majorは、クエリのスタックを許可しません。 PHP/MySQLアプリケーションを使用すると、mysqli::multi_query()またはmysqli_multi_query()関数を使用すると、クエリのスタックが可能になります。

これらのシステムは、サブ選択、ユニオン選択、ブラインドSQLインジェクション、_into outfile_、またはloadfile()を使用して利用できます。 SQLMapとHavijはどちらも、SQLインジェクションの利用を自動化するツールです。 SQLMapは、幅広い機能を備えた優れたツールであり、さまざまなインジェクションとDBMSをサポートしています。

18
rook

サイトでアポストロフィ(')を使用していない場合は、次のようにしてみてください。

http://www.example.com/articles.php?id=-1; DROP ALL TABLES; --
0