2015年3月30日月曜日

TDU CTF 2014 Satellite in ConoHa に参加してきた



大学の友人である Nomuken 氏の主催する TDU CTF 2014 Satellite in ConoHa に参加してきた。前身である mlabCTF から数えて 3 回目(多分)となる今回は、会場を ConoHa (GMO) が提供する会場に移し、参加者も学外から参加可能になり、より大規模かつ開かれた CTF になっていた。
ところで Connpass で登録した時は「机なし(イスのみ)枠」であったが、会場に入ってみると机を参加者全員分用意して頂いていた。ラップトップの放熱による低温火傷から膝から太ももに掛けてが守られたので大変ありがたい。

得点は最初の方は 50 点位であったが、なんとか 1080 点を獲得し、14位に位置する事が出来た。
(と言ってもプロの方々が続々 -5000 点を炸裂させていたので実質 20 位)

CTF 界隈では解法をまとめた記事を WriteUp と呼ぶそうだが、自分の解法はテンプレを流しこんだり力ずくで解いたりしたので WriteUp というオシャレな呼び方はあまり出来そうにない。




SUPER ULTIMATE COOL SECURE NOTING SYSTEM

「admin page」に飛び、パスワード欄(ヒントにSQLiと書いてあった)に「t' OR 't' = 't」というTheテンプレートを入力したらFLAGを手に入れることが出来た。
この問題は解答が複数あるので、もう1つを探そうと検索欄に「%」を入れたりもしたが特に何も得られなかった。


EasySQLi test

「" OR 1=1--」を突っ込んだ。これもTheテンプレートと言うべき一文だが、「 ' 」がエスケープされており「 " 」で置き換えられる事に気がつくまで何が何だかよく分からなかった。
この問題も解答が複数あるそうで、「次はテーブル一覧を拾っていこうぜ」的メッセージを読んだのだが自身の SQL 力が足りず断念。


Broken Data.

とりあえず全部繋げて base64 デコードしてみる。
$ echo 'UEsDBBQAAAA(中略)AAAAAA' | base64 -d
すると中に何かファイルが格納されているようなので、ファイルに出力してみる。
$ echo 'UEsDBBQAAAA(中略)AAAAAA' | base64 -d > out
出力したファイルのヘッダを Linux のデスクトップ環境 MATE が自動判別して「アーカイブ」のアイコンを貼り付けてくれたので、何かしらのアーカイブであることが判明した。
ひとまず zip にしてみると中のファイルを開くことが出来たが、ファイルにはパスワードが掛かっている。
ここで、この zip ファイルが破損しているという前提で、破損した zip ファイルを解凍できることが売りの Explzh という Windows ソフトウェアを使用して解凍した。すると、ファイルを読むことが出来た。

後の解説で、zip にはファイルごとにパスワードが掛かっているかどうかを判別するフラグを立てており、そこが破損している事が明らかにされた。しかし自身にはその知識が無く、バイナリ問題なのにデスクトップ環境やユーティリティの力で解けてしまったので、これは知識を付けて再挑戦したい。


Trip Picture

ラブライブのラバーストラップが写っている JPEG 画像が与えられるので、なんとなくバイナリエディタで開くと最後にフラグが書いてあった。どうでも良いけど「ラブライブのラバーストラップ」という文の「ラ」の出現頻度の高さ


読めない文字1

base64 で 2 回デコードした。


unknown file

TDU で grep した。


ASCII Art

これもバイナリエディタで flag.zip を開いてみたところ、「@」をふんだんに使用したアスキーアートが出現した。


柚子胡椒 Vol.1

落としてきた pcap ファイルを WireShark で開き、片っ端から見ているとフラグが見つかった。


Mini Quiz#1

封筒に入る ThinkPad はどれかを選ぶ問題。薄さ的に X300 だなぁと思った。本物を見たことは無いのでいつかお目にかかりたいのだがめっちゃレアらしい。


Mini Quiz#2

OS X のバージョンを整数で答える問題。
最初、動物と数字が空白で繋がっていると思いパズル的問題かと頭をひねったけど実際は矢印で繋がっていた。


我が同胞に次ぐ

最初問題を見た時に、同胞とは……?と思い、とりあえずシーザー暗号かと思い Java で1文字ずつずらすプログラムを書いたが、文字コードのズレによる Unicode 絵文字パラダイスが広がるだけで特に何も得られなかった。

しかし競技中に Nomuken 氏から「この問題は宗派が別れる」という発言があり状況は一変。宗教戦争といえば Vim / Emacs、Vim / Emacs といえば宗教戦争というイメージを思い出し問題文を Vim に突っ込んだ。
avia[Esc]
hhlam[Esc]
li[Esc]
as[Esc]
li[Esc]
ii[Esc]
llaem[Esc]
xiwe[Esc]
hhiso[Esc]
lllasom
するとカーソルがカチャカチャと動き、目の前には「Vimは素晴らしい」という文が現れたが、自分自身はあいにく nano 派だったので submit してそっと :q! した。



以下、解けなかった問題。

Evidence

RawImage というイメージファイルが与えられる。

$ fdisk -l ./RawImage

で情報を見てみると、FAT12 でフォーマットされたディスクイメージらしい。
FAT12 ?フロッピー?と思い色々とググった結果、

$ sudo losetup /dev/loop0 RawImage
$ sudo partx -av /dev/loop0
$ sudo mount /dev/loop0p1 ./mnt
でマウントすることが出来た。

が、中には Nomuken 氏の Twitter アイコンと謎のテキストファイルのみ。

テキストファイルに書かれたドメインは TDUCTF の管轄外なのでアクセスしても無駄であり、では同梱された画像にヒントがあるのかと画像を GIMP に突っ込んでトーンカーブを派手にいじったりもしたが FLAG は無し。ここでお手上げ。

結局はツールを使い「イメージ内に残っている『削除済ファイル』を探す」という作業を行うのが正解であり、実はマウントしても削除済ファイルは読めないということを知った。


感想

自身の知識の無さを改めて痛感した一日となった。今まで Android ばかり触れていたので Web 系に弱く、今後はより幅広い知識を取り込んでいけたらと思う。
それと今回は妨害コンテンツが大変強力で、中でも音程ガバガバリコーダーの動画は運営の解説にツッコミを入れるかの如く音程を外しにかかるので飲みかけの緑茶をディスプレイに吹きそうになった。

Nomuken 氏を始めとする TDUCTF 運営の皆様には、 CTF を通じてセキュリティについて楽しく学ばさせて頂いた。そして何より、連日問題作成で遅くまで起きていたのをよくTwitterで目にしていたので、解放された今日からは睡眠を取り身体をゆっくりと休めて頂きたい。本当にお疲れ様でした。



会場に突如として出現した脱法ドラッグまんがタイムきららコーナー。
なお、上の3冊を原作とするアニメはキャラクターが松岡修造に差し替えられた上でプロジェクターに放たれた。

0 件のコメント:

コメントを投稿