CodeGate2012 Forensics 200を解いてみる

前回に引き続きCodeGate2012の復習とか

※注意

  • 他の方のwriteupを参考に解いています。(許可とってないのでリンクは貼りませんが、ぐぐってすぐ出てくる海外の方のブログを色々参考にさせていただいています。)
  • できれば全問触りたいのでwriteupを見ることを前提で解き初めてます。

問題文

When IU who lives in Seoul tried to do SQL Injection attack a certain WEB site, suddenly the browser was closed abnormally. What is the SQL Injection value she tried to enter and when the browser was closed? The time is based on Korea Standard Time(UTC +09:00)

Time Format is YYYY-MM-DDThh:mm:ssTZD (TZD : +hh:mm or hh:mm)
Answer : injection_value|time
(‘|’ is just a character)
Convert ‘ ‘ to ‘_’ for injection value.

ざっくり意訳

ソウル在住のIUがあるWEBサイトへSQLインジェクション攻撃を試した際に、突然ブラウザが以上終了してしまった。ブラウザが閉じてしまった時間と彼女が行ったSQLインジェクションの値を答えてください。

時間は韓国標準時刻(UTC +09:00)

答えは  SQLインジェクションの値|時間 の形式です。

スペースはアンダーバーに置き換えてください。

 

こんな感じですね。いってみます!ほとんど他の方のWriteupの再現を、って感じですが。

問題ファイルはforensics100の問題と同様、7zip圧縮されてるwindowsのUsersフォルダですね。

この問題でのポイントは

  • SQLインジェクションをしてたらブラウザが落ちた

の一点ですね。ちなみにforensics100でproneerはCFOの名前かと思ってましたが、このハッカーのおねーさん(年齢は分からないけどw)の名前っぽいですね。失礼しました・・・。

WindowsのUsersフォルダが見れる場合、そのユーザが使ってる可能性があるアプリケーションの情報をチェックしたい場合は/Users/[user name]/AppData/Roaming/内をとりあえず覗いてみる、ってのは定石として良いかもしれませんね。(他の方は当然やってるかもしれませんが)ザックリですいませんが、上記フォルダからMozilla/Firefoxフォルダの中にいろいろあります。

ここで備忘録のためにメモしておくのですが、writeupを書かれてる方は、スパっとFirefoxのフォルダにたどり着いているのですが、この/Users/proneer/AppData/のなかを見る限りInternet Explorerもインストールされてる様なんです。どういう手順でfirefoxのフォルダにたどり着いたか気になります・・。チームで出てる場合は人数分けたりしても良いかもですね。どのみち、ブラウザが落ちた、ということに着目すれば、ブラウザの情報に何かしら情報が残っているかも、という流れにはなりますね。

ここで着目するのが、Profiles/075lfxbt.default/sessionstore.js

Firefoxにはデフォルトでセッションストア機能っていうのがあって、PCのダウンなどにより、意図してないアプリケーションの終了があった場合に、タブや状態などを復元してくれる機能らしいです。(Chromeにもありますね。IEとかsafariはどうなんだろ・・・ちょっと宿題に。)つまり定期的にブラウザの状態をファイルに保存していて、ダウンの際に復元できるように備えてあるわけです。

このファイルを確認すると

Screen Shot 2013-02-14 at 14.40.05

Screen Shot 2013-02-14 at 14.40.22

見つかりますね。フォーム入力できるページへのアクセスはいくつかありますが、値を入力してる箇所はここだけ。(しかも思いっきりSQL文っぽいし)日付はlastUpdateの値がそれです。writeup見ながらだからサクサクと理解しながら解けましたが、ここにサラっとたどり着くには知識がないとダメですね・・・。

ここから日付時刻(1328976025895)を問題文で指定されたフォーマットに変換してあげます。

コードはGithubにあげました。コード
Screen Shot 2013-02-14 at 23.34.07

実はpythonでUNIX標準時間をW3C-DTF形式にするところがめっちゃ時間かかった・・・

今回ここが一番勉強になったかもしれません・・・PHPならワンライナーでできたんですが・・・

後ろに+09:00というようにUTC時刻との差が表示されるやつです。コードにあるように結局は拡張モジュール使いました。ぐぬぬ・・・

しかも形式が+09:00ではなく、+0900がデフォルトで、強引に正規表現で整形するという・・・プログラム書く意味ないじゃん!!!!

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です