Hello there, ('ω')ノ
🎯 ラボの目的
このラボでは、商品カテゴリフィルターにSQLインジェクションの脆弱性があります。UNION攻撃を使用して他のテーブルからデータを取得するためには、まず元のクエリが返すカラム数を特定する必要があります。このラボの目的は、NULLを使用したUNION SELECTによって追加の行を返すことで、クエリが返すカラム数を特定することです。
🛠️ 手順:NULLを使ったカラム数の特定
1. カテゴリフィルターのリクエストを確認
- ブラウザで任意のカテゴリ(例:
Gifts
)をクリックします。 - Burp SuiteのProxyタブで、該当するリクエストを確認します。
2. Burp Repeaterでリクエストを送信
- 該当リクエストを右クリックし、「Send to Repeater」を選択します。
- Repeaterタブで、
category
パラメータの値を以下のように変更して送信します:
Gifts' UNION SELECT NULL--
- エラーが発生することを確認します。
3. NULLの数を増やして再送信
- NULLの数を1つずつ増やして再度送信します:
Gifts' UNION SELECT NULL,NULL-- Gifts' UNION SELECT NULL,NULL,NULL-- ...
- エラーが発生しなくなり、追加の行が表示されるまで続けます。
4. カラム数の特定
- エラーが発生しなくなった時点で、使用したNULLの数が元のクエリが返すカラム数です。
- 例えば、
Gifts' UNION SELECT NULL,NULL,NULL--
で成功した場合、カラム数は3です。
🧠 ポイントと注意点
- NULLの使用理由:NULLはすべてのデータ型に適合するため、データ型の不一致によるエラーを回避できます。
- エラーの確認:アプリケーションがエラーメッセージを返さない場合でも、HTTPステータスコードやレスポンスの変化を観察して成功を判断します。
- 次のステップ:カラム数を特定した後は、文字列データを挿入して表示可能なカラムを特定し、実際のデータ抽出を行います。
✅ まとめ
このラボでは、UNION SELECTを使用してNULLを挿入し、元のクエリが返すカラム数を特定する方法を学びました。これは、SQLインジェクション攻撃を成功させるための重要なステップです。
Best regards, (^^ゞ