読者です 読者をやめる 読者になる 読者になる

SECCON2013で出題した問題一式を公開しました。

 去年(2013年)から今年にかけてSECCON2013というセキュリティコンテストの運営に参加させていただきました。主に問題作成担当だったので、もし参加された方がいましたら、いくつかの問題は私が作成したものだったかもしれません。
 そのSECCONも先週末(3月1~2日)の決勝戦を終えてひとまずひと段落となりましたので、この1年で出題された(私が作った)問題一式を可能な限り公開したいと思います。

50000枚のアセンブラ短歌画像から 0609 と表示されるものを探せ

 http://07c00.com/tmp/tanka5t-50000.zip
 これは決勝戦で出題された問題(の一部)です。50000枚の画像がZIP圧縮されており、1枚1枚にはアセンブラ短歌(マシン語列)が書かれています。その中から 0609 を表示するものを探す問題でした。画像からテキスト(コード)を抽出し、それを実行するコードを書く必要があります。
 問題作成においてはマシン語を私(愛甲)が、画像化部分を竹迫氏が担当しています。またアセンブラ短歌は書籍にもなっています(私も少し書かせていただいています)。もし興味があればぜひ買ってみてください。

31バイトでつくるアセンブラプログラミング ?アセンブラ短歌の世界?

31バイトでつくるアセンブラプログラミング ?アセンブラ短歌の世界?

 解法はこちらのブログ→SECCON CTF 2013 全国大会 Druaga write-up - math314のブログの方がwrite-upを書いてくださっています。

暗号解読

f:id:b07c00:20140305011106p:plain
 こちらは暗号の問題です。SECCON2013オンライン予選にてCrypt300として出題されました。暗号解読というタイトルで上記の画像が1枚渡される問題です。知っていればとても簡単で、楕円暗号の問題ですね。ビット数が小さいため簡単に解読が可能です。
 CTFではあまりコアな暗号が扱われない(古典暗号ばかりの)ため、こういった新しめの暗号も扱ってほしいなぁと個人的に思って、今回は自分で作ってみた感じになりました。近代暗号の脆弱性なんかを扱った問題とかも面白いと思うので機会があれば作ってみたいと思います。
 解法はSECCONオンライン予選のwrite-upをまとめたサイトがありますので、ここのプログラミング・cryptの300を見てみてください。何人かの方がwrite-upを書いてくださっています。

Enjoy the Game

 http://07c00.com/tmp/game_seccon2013_online.zip
 続いても、同じくSECCON2013オンライン予選で出題された問題です。こっちはBin100として出題されました。Windows/x64で動作する(ダンジョン探索系の)ゲームで、クリアすればパスワードが表示されます。f:id:b07c00:20140305013720p:plain
 迷路のようになっており、クリアするためには隠し通路(というか通り抜けできる壁)を探す必要があります。解法はいろいろありますが、基本は実行ファイルを解析してクリア条件を満たすように修正する問題となります。Windows/x86だと便利なツールが出揃っていて簡単に解ける問題なのですが、逆にツールに頼りきってしまってベースとなる知識や技術がないがしろになったりもするので、あえてx64で出題した問題でした。これも解法はSECCONオンライン予選のwrite-upをまとめたサイトから確認できると思います。

Shellcoder's Challenge と Hack this site!

 Shellcoder's ChallengeはSECCON関西(大阪)大会にて実施したバイナリ系のコンテストです。これは会社のブログで詳しく書いてたりしますので、そちらを参照ください。
 Hack this site!は、SECCON2013オンライン予選でBin500として出題された問題です。
f:id:b07c00:20140305015640p:plain
 Shellcoder's Challengeのシステムには思いっきり脆弱性があったため、それをそのまま問題にしてしまった感じなのが実はオンライン予選のBin500でしたw
 Shellcoder's ChallengeとHack this site!は問題のソースコード一式をGitHubに公開しているので、興味がある方はそちらを参照してください。

 私が関わった問題はだいたいこんな感じです。実際は他にもまだまだあったとは思うのですが、ちょっと覚えてなかったり、コードや問題ファイルがすでに紛失していたり、似た問題だったりといった感じだったりすると思うのでまたの機会にさせていただきます。
 最後にSECCON2013に参加された方々お疲れ様でした。自分も以前少しだけCTFをやってたことがあるのですが、これほど勝負はときの運だなぁと感じるものもないと思いました。大会によって出題傾向は変わるし、ルールも毎回変わるし、扱われる技術分野は広すぎだしである程度運ゲーを覚悟してた感がありました。ただ、技術分野が広いからこそすごく勉強になるし、興味がなかった、学ぶ機会がなかった分野の知識も否応なくついて、すごくスキルアップを実感できた感もあり(あとめちゃくちゃすごいやつに出会えたりもしてw)、まぁ楽しかったなぁという経験があったことが今回SECCONに協力させてもらった理由のひとつでした。今後のSECCONがどうなるかは分かりませんが、DEFCON CTFのように長く続き、そして海外からも参加者がくるような大きな大会になればいいなと思います。本当にお疲れ様でした。