以下の内容はhttps://cysec148.hatenablog.com/entry/2025/07/16/053108より取得しました。


【有料メンバー限定試作中】URL操作を利用したBlind Boolean-Based SQL Injection攻略ガイド

Hello there, ('ω')ノ

1. 攻撃チェーン全体像

Blind Boolean-Based SQLiとは

  • Blind(盲目的): サーバから明確なエラーメッセージやデータは返ってこない。

  • Boolean-Based: SQLクエリ内の条件分岐を利用し、 「条件が正しい場合と間違っている場合でレスポンス挙動が変わる」ことを利用する。

  • URLパス利用: 通常はクエリパラメータやPOSTデータが使われるが、 今回はURLのパス部分そのものを操作するのが特徴。


2. 実際の流れと具体的テクニック

ステップ1: URLパス内の変数確認

例:

https://target.com/profile/1234

この 1234 の部分が

  • 動的にデータベースから値を取得しているか
  • 存在しないIDを指定した場合の挙動が異なるか

をまず調査します。


ステップ2: Blind Boolean条件付きペイロード投入

基本ペイロード例:

https://target.com/profile/1234 AND 1=1
https://target.com/profile/1234 AND 1=2
  • 1=1 の場合 → 正常ページが表示されるか
  • 1=2 の場合 → エラーや404など違う挙動になるか

この差を利用し、SQL Injectionの有無を判定します。


ステップ3: 実際のデータ抽出

例えば次のように条件を細かく詰めていきます:

  • ユーザ名1文字目がaかどうかを確認
  /profile/1234 AND SUBSTRING((SELECT username FROM users LIMIT 1),1,1)='a'
  • レスポンス挙動を観察し、一文字ずつ推測

これを繰り返すことで、 データベースからの情報抽出が可能になります。


3. 攻撃成立条件まとめ

項目 内容
URLパス利用 クエリやPOSTではなく、URLパス変数がSQLと結びついていること
Blind条件差 成功/失敗でレスポンスステータスや内容が変化すること
WAF無効化 WAFや入力フィルタが適切に働いていないこと

4. チェックリスト形式まとめ

✅ URLパスSQLi確認手順

  • [ ] URLパス内の値がデータベースと関連しているか確認
  • [ ] 存在しないID指定時のレスポンス挙動確認
  • [ ] Boolean-Basedペイロード投入(AND 1=1 / AND 1=2)
  • [ ] SUBSTRINGやASCII関数利用によるBlindデータ抽出試行

✅ 防御確認チェックリスト

  • [ ] URLパス部分に対する入力値サニタイズ有無確認
  • [ ] プレースホルダー・プリペアドステートメント利用有無確認
  • [ ] エラー詳細レスポンス非公開設定
  • [ ] WAF・IDS/IPSのログチェック

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/07/16/053108より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14