CTFの概略
CTF(Capture The Flag)はセキュリティコンテストの一つである。コンテストの主要なスタイルは、セキュリティ技術を駆使して "Flag" と呼ばれる情報を探しだす、というものであり、名前もこれに由来する。
a)ゲーム形式で行うのでモチベーションの維持が容易
b)初心者向けCTFは、取り掛かりのハードルも十分に低く設定してある
c)現実の事件に即した、リアルな問題も出題される
ということから、単なるゲームとしてだけではなく、学習用の教材としても非常に優れている。
チームを組んで参加することも一般的だ。個人での参加もできるが、やはりチームで戦ったほうが戦績は良くなる傾向にあるのも確かである。そのため、上位を目指すのであれば複数人でチームを組むのも有望な選択肢であると言える。
CTFの開催スタイル
CTFの問題ジャンル
主にJeopardyについてだが、大まかな問題分類が存在する。ただ、公式に決められたものというわけでもなく、CTFによって呼び方が違ったりする。そして、複数のジャンルをまたぐような問題もある。それらの点には注意すること。
Web
主にWebのセキュリティに関する問題。有名どころとしては、SQLインジェクションなど。
Network
ネットワーク技術に関連する問題。ネットワーク上を流れるパケットを記録したファイル(pcapファイル)を読んで、フラグを探したりする。
Forensics
与えられたファイルを調査したりする問題。ファイルに付加されている情報などを参考にして、ファイルからフラグを読み出す方法を探す。
PPC(Professional Programming and Coding)
条件を満たすようなプログラムを作成する問題。
Rev(Reverse Engineering)
機械語で書かれたファイルを渡され、それを解析することでFlagを得る形式の問題。
Pwn(Pwnable)
バイナリやソースコードを解析し、指定された環境の脆弱性を探す問題。脆弱性が見つかったらそれに対応する攻撃を行う(Exploitを書く)ことでフラグを取得できる。
Crypto(Cryptography)
暗号化アルゴリズムやハッシュアルゴリズム、エンコード方式などに関する問題。難読化されたファイルが渡され、それを解析することでフラグが得られる。
Misc(miscellaneous)
その他の問題。
CTFの見つけ方
CTF Timeを参考にするのが良いだろう。
Upcommingのタブを開くと、近日おこなわれるCTFが一覧で表示されている。
とはいえ、ローカルのCTFなどにおいてはCTF Timeに乗らないものもある。これらについてはTwitterのCTFのタグなどを見ると良いだろう。しばしば情報が出回っている。
参考資料
碓氷利宣, 竹迫良範, 廣田一貴, 保要隆明, 前田優人, 美濃圭佑, 三村聡士, 八木橋優. セキュリティコンテストチャレンジブック : CTFで学ぼう!情報を守る戦い方, 初版, マイナビ出版, 2015, p8-13.