SQLインジェクションを練習しているラボマシンがあります。
ユーザーDBを手動で抽出できたため、悪用しようとしているPOSTパラメーターは脆弱です。
次に、以下のコマンドを使用してSQLmapでこれを実行しました。
sqlmap -u 192.168.1.50/base-login.asp --dbms="Microsoft SQL Server 2000" --data="txtLoginID=admin&txtPassword=test&cmdSubmit=Login" -p txtLoginID --method=POST
Sqlmapコマンドを実行するたびに、txtLoginIDは挿入できないと言われます。私はそれが事実であるということを知っているので、これは奇妙だと思いました。 (私はまた、最高のリスクとレベルを設定して上記のコマンドを試しました)
トラフィックのキャプチャーを続けて、場違いなものがないか確認しました。すべてが問題なく見え、sqlmapが渡そうとしていた変数の一部を取得して手動で入力しました。私がこれを行ったとき、SQLを注入するときに期待するように出力が与えられました。
ライブHTTPヘッダープラグインを使用してHTTPヘッダーをキャプチャし、期待どおりに出力を生成して正常に再生することもできました。
私はsqlmapを初めて使用するので、何か不足しているのではないかと思っていました。私がインターネットで読んだり見たりしたすべてのものから、私はそれを正しくやっているように見えます。
構文を確認するために、たとえばげっぷによって投稿の定期的なリクエストを傍受できます。それをファイルに保存し、注入をテストするためにこのリクエストを使用するようにsqlmapに通知できます。そのため、sqlmapのオプションは-r
。
Target:
At least one of these options has to be provided to set the target(s)
-d DIRECT Direct connection to the database
-u URL, --url=URL Target URL (e.g. "www.target.com/vuln.php?id=1")
-l LOGFILE Parse targets from Burp or WebScarab proxy logs
-m BULKFILE Scan multiple targets enlisted in a given textual file
-r REQUESTFILE Load HTTP request from a file
これはタイプミスですか?
--data "=txtLoginID = admin&txtPassword = test&cmdSubmit = Login "
する必要があります
--data = "txtLoginID = admin&txtPassword = test&cmdSubmit = Login "