ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

Blind SQL Injectionのネタ

Blind SQL Injectionの攻撃例って条件式でSQL Injectionが発生するケースのものなんだよなぁ。InsertやUpdateの更新データとか、ストアドプロシジャの引数での例ってあんまり見ない気がする。実際問題どうやればよいかというと、やり方は想像つくんだけど、結構面倒だったりするしなぁ。
方法は多分こんな感じ。
Updateの場合は簡単で「a';--」と「'」のレスポンスの違いを見ればいいだろう。結果が異なれば脆弱性ありだろう。「'」はエスケープされてないとエラーになるし。数値の場合は、「1;--」と「;--」でどうかな?
Insertやストアドプロシジャの場合は結構面倒そう。
「'」と「a','a',・・・(n個)・・・)」や「a',1,・・・(n個)・・・)」とか、「a'」の後に「,1,」か「,'a'」を適切に入れてそのレスポンスが全て同じ(=全てエラーか正常を示す)なら問題ないだろうし、どこかでレスポンスが異なれば(=異なった結果だけが追加やストアドプロシジャの実行に成功し、それ以外は失敗した)なら脆弱性があるだろうし。
いずれにせよ、文法的にエラーとなるか、エラーとならないかで判断できるんじゃないかなぁ?
こういった検出方法もツールに追加したいけど、なかなかねぇorz

でも、こういった手法をBlind SQL Injectionといっていいのか不安になってきたw