Blind SQL injection with time delay
はじめに
「Blind SQL injection with time delays」のWriteupです。ちょっともやもやする結果にはなりましたが、たまにはこういうこともありますね。
Summary
- PostgreSQLの
pg_sleep(seconds)
など、指定した時間だけ待機するコマンドを使って、評価式の真偽を判断する手法 - 今回のペイロード
' || pg_sleep(10) --
の||
は文字列連結のためのもののようで、なぜこのように使われるのかは分からず(pg_sleep()
自身は文字列を返すわけでもないらしいのでますます分からない)
Writeup
今回はサイトに10秒の遅延を起こすことが目的です。
Intruder を使って、各データベース(Oracle、Microsoft SQL、PostgreSQL、MySQL)に対するペイロードを自動で投げてみました。
結果、 '; SELECT pg_sleep(10)--
が刺さったようです。
試しにProxyを使って投げてみたのですが、レスポンスが遅延する様子はありませんでした。Solutionを見てみると、 ' || pg_sleep(10)--
が正答なようです。実際に投げてみると、レスポンスも10秒遅延しました。