SQL injection UNION attack, retrieving multiple values in a single column
はじめに
「SQL injection UNION attack, retrieving multiple values in a single column」のWriteupです。
Summary
- usersテーブルからusernameとpasswordを取り出さなければならないのに、アプリケーションが利用する文字列型の列が1つしかない場合、 単純に
'+UNION+SELECT+username,password+FROM+users+
…などとすることはできない(文字列型の列が、usernameとpasswordの2列ぶん必要だから) - このような場合、文字列結合を使って、1つしかない文字列型に押し込む
- 例えば
username||'-'||password
のようにする
- 例えば
Writeup
目的は、usersテーブルからusername=administratorのpasswordを取得してログインすることです。
まずは ORDER BY
句を使って列数確認。2列です。
次に、文字列型の列の位置確認。2列目が文字列型のようです。
最後に、 trackingId
の末尾に 'UNION+SELECT+NULL,username||'-'||password+FROM+users+WHERE+username+=+'administrator'--
を付加して送信すると、-
で連結されたusernameとpasswordがレスポンスされます。
これを使ってログインできました。