ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

Blind SQL injection with time delay

はじめに

「Blind SQL injection with time delays」のWriteupです。ちょっともやもやする結果にはなりましたが、たまにはこういうこともありますね。

portswigger.net

Summary

  • PostgreSQLpg_sleep(seconds) など、指定した時間だけ待機するコマンドを使って、評価式の真偽を判断する手法
  • 今回のペイロード ' || pg_sleep(10) --|| は文字列連結のためのもののようで、なぜこのように使われるのかは分からず( pg_sleep() 自身は文字列を返すわけでもないらしいのでますます分からない)

Writeup

今回はサイトに10秒の遅延を起こすことが目的です。

Intruder を使って、各データベース(OracleMicrosoft SQLPostgreSQLMySQL)に対するペイロードを自動で投げてみました。

f:id:befs_anne:20210418005355p:plain

f:id:befs_anne:20210418005413p:plain

結果、 '; SELECT pg_sleep(10)-- が刺さったようです。

f:id:befs_anne:20210418005438p:plain

試しにProxyを使って投げてみたのですが、レスポンスが遅延する様子はありませんでした。Solutionを見てみると、 ' || pg_sleep(10)-- が正答なようです。実際に投げてみると、レスポンスも10秒遅延しました。