DEFCON 20 CTF GrabBag 400(gb400) writeup
問題文: What is Jeff Moss’ checking account balance?
Bank site = http://140.197.217.85:8080/boa_bank
User:blacksheep
Password:luvMeSomeSheep
リンク先にアクセスすると早速Basic認証がお出迎えしてくれるので問題文にあるUser/Passwordで認証を行います。
すると下図の通り銀行(に模したサイト)「Baaaaaaank Of America」のサイトにアクセスできます。
Webサイトで個人(ここではJeff Moss)の情報をとなればSQL Injection。
ということでアタックできそうなポイントを探します。
zipコードにより支店を検索するところに「'(シングルクォート)」を入力してみると
下図のようにエラーを表示します。
テーブル情報を入手するためにSQL文を実行させます。
0 union select table_name,'0','0','0','0','0' from information_schema.tables
ずらずらずらっとでてきます。ここの情報を参考にさらにSQL文を実行していきます。
0 union SELECT column_name,'0','0','0','0','0' FROM information_schema.columns WHERE table_name ='customer'
いい感じ♪
ここまできたらユーザ名とパスワードを。
0 union SELECT username,password,'0','0','0','0' FROM customer
これでユーザ名とパスワードの一覧表が取得できるはずですが、出力の際に「<」や「>」などがあると
ブラウザ上での表示がされない場合があるのでソースコードで確認します。
「jeff moss」こと「dark tangent」のものと思われる
ユーザ名「dtangent」とそのパスワード「erl(<qZsxZ」が見つかりました。
このアカウント情報を利用して「My Baank」からログインを行います。
ログインに成功し、情報を見ることができました。
問題文は「What is Jeff Moss’ checking account balance?」ですので
「checking」の最新の数値である「0.00」で正解。
問題文の「balance」の意味がよく分からず一番下に表示されている数値「-3160.86」を入力しても
正解となりました。正解したからいいものの、これはどう見るべきものだったのかは分からずじまいでしたw