しゃちの備忘録

プログラミングを中心とした技術関連の備忘録です(今のところ)

SECCON 2016 Online CTFに参加しました

12月10日, 11日に開催されたSECCON 2016 Online CTFに参加しました. CTFをやり始めて3年目ですが, CTFに参加するのはほぼ1年ぶりの参加なので実質初参加です….

最近ここの更新が滞っていたので, 折角なので書いてみようと思い立ったので書きます.

SECCON CTFって?

はじめにCTFとは, Capture The Flagの略で, 問題で与えられた物に隠されたキーワード(Flag)を入手するという形式のコンテストになります. 出題の形式は様々で, Flagが隠されている物は実行形式のファイルだったり, ソースコードだったり, パケットの一部だったり, webのリンクや画像だったりもします. それらに対し, さまざまな知識を使ってアプローチを試みて隠されたキーワードを入手することを目指します. 例えば対象が, 実行形式のファイルなどだった場合はリバースエンジニアリングを試みたり, パケットの一部ならパケット解析をしたり, webのリンクだったらそのサイトに行ってSQLインジェクションしたりする といった感じです. 要求される知識の幅がとにかく広く, コンテスト中のググりでフラグ取得に必要な知識を勉強するのはいつものことです.

CTF自体は本来セキュリティに関する技術の勉強の側面がメインであり, Flag=機密情報に見立てそれを入手する技術を勉強し実践する機会として設けられています. 普通のサイトでSQLインジェクションをやると犯罪になるので, それを競技として実践しどんなものか実感できる貴重な場だと思います.

で今回参加したSECCON CTFとは国籍、性別、年齢、問わず参加可能な日本最大のオンラインCTFコンテストです. 私は過去2回参加していて, 破損QRコードを復号することに定評がありました……. 今年は自分もQRコード以外が解きたくなったので, 個人参加です. どんな結果になっても泣きません.

挑んだ問題

Vigenere(Crypto 100)

タイトルからしてヴィジュネル暗号を解く問題っぽいです. 暗号化された文字列と, 元の文と, 鉤の文字数がと対応表が以下のように与えられました. k: ???????????? p: SECCON{???????????????????????????????????} c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ 対応表は略

さらに, md5で元の文をハッシュ化した文字列が与えられました. md5(p)=f528a6ab914c1ecf856a1d93103948fe

ので, フラグGettoに向け, 以下のような二つの方法を考えました.

その1 1.key(以降k)である「????????????」を取得(銭湯七文字がわかってるとはいえ, 275 = 14348907パターンある…) 2.そのkで変換後の文(c)を原文(p)に復号 3.pをmd5ハッシュ値計算をして, 「f528a...」といっちしているかを調べる 4.一致したら終了, しなかったら1にもどり別のkを生成する

その2 1.md5(p)を適当に逆変換 2.先頭が「SECCON{」になっていれば採用, なってなければ他のパターンを試す

その2を試したらあっけなく通ってしまいました…. 先頭のSECCONが分かってるのがでかかった感じです. 正統派で行くなら, その1ですよね.

VoIP(Forensics 100)

「Extract a voice」という説明とともにpcapファイルが配られました. pcapファイルとはPacket Capture Dataの略です, パケットの一部が格納されたファイルです. で, パケット解析にはWiresharkというソフトが便利です. のでそれでこのpcapファイルを開きます.

ところで問題が「VoIP」って名前です. VoIPとは, 音声をパケットに変換したものをIPネットワークでリアルタイム伝送する技術のことを指します. そういうわけで, 「このパケットは音声が変換されたものなのかなー」とか思ってました. ので, WiresharkについてるVoIP機能で再生してやると, それっぽい言葉が. 何回か間違えつつ, 入力するとFlagがでましたとさ. 聞き取りむずかしかった

まとめ

実は今年は2問しか解けませんでした…200点ですね(低い). CTFへの参加は1年ぶりでしたが, 各種ツールを使うのにも手間取ってしまいもったいなかったです.

やっぱりCTFも競プロもちょっと気合い入れてやらないと中途半端だし, できないと悔しいですね…… もっと精進します.