TDUCTF2015に参加しました

タイトルのようにTDUCTF2015に参加してきました。あんまり解けなかったのですがせっかくなのでWriteup的な何かと感想を書いてみたいな、と思った次第です。

結果は31位くらいで760点くらいだった気がします。既に記憶が結構曖昧です。

数問は出来たけど他は....って感じですね。なので書いてあることはその辺りのレベルであることを察して頂ければ幸いです。

プレイしている最中に「Writeup的な何かを書いてみよう!」なんて微塵も思っていなかったので、問題のタイトルやら問題文やら諸々の画像がなく、漠然としていますがご了承ください。

畏まった文を書くのが得意ではないので口語表現が多くなっておりますがよろしくお願い致します。

それでは以下からが本文です。

Writeup的な何か

写真の撮影時間を解答する問題

確かclockって名前でしたっけ?

写真の撮影時間ということで、プロパティから、もしくはバイナルエディタで見てExif情報を確認すると撮影時刻が確認できます。Exif情報を確認できるようなソフトもあるらしいですが、自分はここで初めてExif情報というものを知ったのでインストールしてませんでした....

時刻が確認出来るもののそれをそのまま解答すると弾かれます。問題文をよく確認してみると、フラグの解答例としてわざわざ「JST」が表記されていました。ここから日本時間で答えろ、との意図が読み取れます。あとは写真を見ると、場所がロンドンであることが確認できるのでその分時刻をずらしてあげると、フラグを手に入れることが出来ました。

14:50

1回目の動画配信時には誤ってキャンセルしてしまったので、2回目の配信時にて入力。動画内にあからさまに書いてあるフラグを入れるとポイントを手に入れることが出来ました。出来ましたが....よく見てみると半分しかポイントが入っていない様子。運営の方が仰っていたように一時停止をしてみると「Youtube」であることがわかります。そこで「Youtubeで見る」的なボタンを押して説明文を見てみると2つ目のフラグがありました。これで全てのポイントとなります。

自分は上記のように考えてたわけじゃなくて、なんとなく「後で見れるようにYoutubeの別タブで開いておこう」とか思っていたら偶然説明文に書いてあったことに気づいただけなので棚ぼた感溢れていました。

ESPer

問題文に「Charlotte」とのみ書かれていた問題。Charlotteは2話までしか見てないんですけど、そういえば最近巷で「友利奈緒」という文字列をよく見かけるなぁと思い、そのまま入力したらなんか出来ました。

自分は日本語でフラグを入力することに違和感を持ってしまい、初めは「TomoriNao」やら「NaoTomori」やらローマ字で書くことにこだわって時間がかかっていましたが、前述の「14:50」の問題から日本語のフラグもあるということに気づいたみたいな感じです。

SQL Practice

ごめんなさいタイトルを正確に覚えてないです。過去のツイートからフラグを探す問題です。

とりあえず「select*from~」って書くんだろうくらいの知識しかなかったので、文字列を探索する場合ってどうやって書くんだろうとその場で調べてみることに。

参考にしたサイト様はこちら。

SELECT構文:WHEREで検索条件を設定する | Smart

ここを見てると、やりたいことが書いてあったので後はテーブル名とフィールド名が知りたいぞ!ということで問題文にあったプログラムのソースを見てみることに。

するとテーブル名が「tweets」、自分がほしいフィールド名は「text」だということがわかるので「select*from tweets where text like '%TDU{%'」みたいなことを書いてあげたら出てきた気がします。ちょっと違ってたらごめんなさい。

picture message

これはヒントからもらえる50点しかもらえていなかったのですが、一応。

ヒントに書かれていた文字列に「=」がありました。そういえばbase64エンコード時に文字数の帳尻合わせで「=」を使うみたいな話を思い出し、ヒントの文字列をbase64でデコードすることに。そうすると50点分のフラグが手に入りました。

もらった「before」、「after」のファイルをバイナリエディタに突っ込むとPDFであることはわかったのですが、そこから先はきっとさっきのフラグのURLが関係あるんだろうなぁと思いつつも手が出ませんでした。電子透過のお話のようです。

cheap camoflage

名前からして、バイナリを覗くとなんかありそうだぞ、ということでとりあえずもらったpngバイナリエディタに突っ込むことに。

チャンクに注目してみると、pngの先頭にあるチャンクの「IHDR」が見られるものの、最端末にあるチャンクの「IEND」が見当たりませんでした。

んじゃどこにあるのかな、と文字列探索をすると以下の画像の部分に「IEND」がありました。

f:id:zenmaibane:20150831002952j:plain

そこまでのバイナリデータがPNGを表していることがわかりましたが、その先に続きがあるようです。

ちょっと見てみると、文字列部分に「PK」(バイナリ部分に「50 4b 03 04」)があることから(下記画像参照)zipが隠されてるのかと考えました。あと「flag.txt」と文字列部に書いてあるのもなんか怪しいですよね。

f:id:zenmaibane:20150831003742j:plain

ということで「PK」以降を切り取り、バイナリエディタの新規作成で貼り付けてzip形式で保存をし、解凍しようとするとパスワードを要求されます。
パスワードなんてなんのこっちゃって感じですが、そういえば元のPNG画像に「pngpong」って書かれてたなぁと思いとりあえず入力すると成功し、flag.txt内にフラグが書かれていました。

 

自分が解けたのはこれで以上となります。

感想

まず、運営の皆様ありがとうございました。4時間もの間、失敗しては考えて解いてといったことを繰り返し楽しむことが出来ました。この感覚を味わえるのもやはり運営の方々がこういった場を設けてくださったいるからこそだと強く感じさせられます。

 

さて、反省みたいなものです。

感覚でなんか解けちゃったみたいのが非常に多く、それ故に点数があんまり伸びないのかなぁとは感じます。過去に参加したCTFは「TDUCTF」と名のつくものしかないのですが、その過去に経験した解き方をとりあえずやってみよう→あ、出来たパターンで解いているな、と自分でヒシヒシと感じています。知識というか出題傾向で解いているといった感覚でしょうか。そういった部分をなんとか潰せたらいいなとは思います。

あとWireSharkやらIDAの使い方がまっっっっっっっっっったくわかってないのも大きいのかなとは。このツールを使うんだなとわかって開いてはみるものの、そこから何も出来ないパターンが多すぎました。

それ以外の問題に関してはそもそも使うツール自体もわからなかったので、その点も気をつけたいなとは。

開始1時間くらいは練習問題しか解けず、焦燥感に駆られ更に落ち着きをなくしていたのですが、なんとか他の問題を解くことが出来ました。ひとまず少しでも解けて良かったです。落ち着くことの大切さが身にしみました。

Lieが解けなかったのと、「おわり?」の解き方がどうもわからなかったので非常に悔しいです。テレビはアニメしか見ないぽたくなので時事ネタと言われても???状態でした。

当初はWriteup的なものを書こうとは微塵も思っていなかったのですが、運営の方から「Writeupを書くまでがCTFだ」とのお言葉を頂き、今回書いてみた意向です。

また、自分が考えたことをアウトプットすることで考えがまとまるというのと、何より書いてみたかったという動機も大きいかもしれません。

Writeup的なものを書くこと自体初めてなので至らぬ点がありましたら申し訳ございません。

素晴らしい成績を出せたというわけではなく拙い記事になってしまいましたが、もしもどなたかのお役に立てていれば幸いです。

ここまで読んでくださった方はありがとうございました!