web-dev-qa-db-ja.com

SQLMap失敗、手動SQLインジェクション成功

SQLMapが失敗してはならないはずなのに、なぜ失敗したのかを理解しようとしています。私のローカルネットワークでは、VMロードされた非常に基本的なSQLインジェクションの脆弱性があります。UserIDフィールドを介してこのコードを手動で実行すると、login.php 脚本:

'|| 1=1#;

この注入も機能しました:

'OORR 1=1#;

このような単純なSQLインジェクションがフォームで機能することを考えると、SQLMapがページにインジェクションの脆弱性がないことを報告し続ける理由がわかりません。ツールを使い始めたばかりなので、シェルコマンドを間違って記述していると思います。これまでのところ、私は以下を実行しました:

sqlmap --wizard 192.168.254.21
sqlmap --level=5 --risk=3 -a 192.168.254.21

どちらの場合も、SQLMapは脆弱性を報告せずに戻ってきます。このような基本的な脆弱性を正しく識別するために、ツールの使用を改善する方法に関するアイデアはありますか?

1
nxl4

通常、SQLインジェクションをテストする特定のリクエストをsqlmapに提供する必要があります。 sqlmapはWebアプリケーションを確実に分析してフォームパラメータを認識することができないため、プレーンIPアドレスを指定するだけでは不十分です。

コマンドは次のようになります。

./sqlmap.py --data "user=test&password=test" -u http://192.168.254.21/login.php

userpasswordをログインフォームの正しいパラメータ名に置き換える必要があります。)

または、--forms引数は、sqlmapにフォームパラメータ自体を検索するように指示しますが、sqlmapは複雑なWebアプリをスクレイピングするために構築されていないため、常に信頼できるとは限りません。

2
Arminius