先日、CTF for Beginnersに参加しましたので、初めてCTF予選にも参加してみました。
解いた問題は以下の6つです。合計で600点獲得できました。
練習問題(100点)
このパケットを解析せよ(100点)
decode me(100点)
箱庭SQLiチャレンジ(100点)
重ねてみよう(100点)
879,394bytes(100点)
CTF初心者ですが、Write-upを書いてみました。
練習問題
練習用の問題で、単純にFlagを入力するだけです。
このパケットを解析せよ
seccon2014.pcapngをWiresharkに読み込んだところ、FTPの通信ログのようです。flag.txtというファイルをGETしていましたので、このファイルのデータを読んだところこんな内容が。
| |
BASE64ぽいのでデコードしたらFlagがでてきました。
decode me
encoded.txtの内容をバイナリエディタでみたところ、
| |
という文字列が。
FRPPBA 2014はSECCON 2014なのかなと推測し、並べてみたところ規則性が。
| |
これってROT13という暗号方式らしいです。でもバイナリをみる限りどうも2バイト文字も含まれているようで、それを扱うにはROT47というものがあるらしいです。
これも ebg13/47 → rot13/47 と一致しますし。
これを扱えるツールはnkfらしいので、Windows版のnkfをインストールして、表示してみたら・・・
| |
これでFlagがとれました。
箱庭SQLiチャレンジ
手始めに以下を入力
| |
おやおや。丸見えです。でも、Flagはここではなさそうです。
他のテーブルをみてみたいので次のように入力。
| |
SQLコマンドの履歴が見えました。CREATE TABLEでテーブル名やスキーマがわかりました。SECCONというテーブルがあるようです。しかも、FLAG というTEXTがあります。これですね。
| |
これでFlagがとれました。
重ねてみよう
afterimage.gifというアニメーションGIFのファイルが提供されました。白い点がランダムに表示されるものです。

問題の通り各コマを重ねると何か見えるのでしょう。
とりあえずアニメーションGIFを作成するようなツールを探してみたところ、Giamというツールがありましたので、これでafterimage.gifを読み込みました。次にツールで重ねて表示してみたところ、

QRコードらしきものが現れました。画像を白黒反転をしてiPhoneのQRコードで読み取るとFlagがとれました。
879,394bytes
Filesystem001.binというファイルシステムのデータのようです。
ファイルサイズが 879,394bytesのファイル名を答えろとのことなので、とりあえず879,394をHEXにしたところ、D6B22になります。これがファイルサイズとしてどこかにあるはずです。
たぶんFAT32だと思うので、バイナリエディタで開いてファイル名らしきものをキーにFATの構造に照らし合わせてファイルサイズが先ほどのHEX値と同じものを見つけました。でもロングファイル名のようです。次にVFATの構造と照らし合わせて、ロングファイル名を求めました。それがFlagでした。
まとめ
以上、今回は初めての参加で、100点の問題ばかりで終わってしまいましたが、参加されたかたのwrite-upを参考にしてテクニックを身につけたいと思います。
でもFlagがとれたときは気持ちいいですね。次回もぜひ参加してみたいと思います。
