CTF分野の詳細ガイド
1. CTFとは
CTF(Capture The Flag)は情報セキュリティ競技の形式です。参加者は解析、脆弱性利用、復号、リバース、フォレンジックなどを通じて flag(通常は特定形式の文字列)を取得し、得点します。
CTFの本質はツールコマンドの暗記ではなく、システム原理・安全機構・攻防思考を総合的に理解することにあります。
1.1 よくある大会形式
- Jeopardy: 分野別問題(Web、Pwn、Reverse、Crypto、Misc など)を順に解いて flag 提出
- Attack-Defense: 相手チームを攻撃しつつ自チームのサービスを防御
- King of the Hill: 目標を継続占有して得点
1.2 CTFの価値
- 実践力向上: 断片知識を攻撃/防御チェーンに統合
- 工学力向上: 自動化、デバッグ、ログ分析、復盤の習慣化
- 協業力向上: 分業、並行実行、時間管理、戦略判断
1.3 問題の特徴
- 多くは「1つの利用可能な欠陥」を中心に設計され、実運用と完全一致しない
- ノイズ情報が意図的に混ざっており、手掛かり選別が必要
- 高得点問題は複数ステップ連鎖が多い
2. Web分野
2.1 コア
Webアプリの動作を理解し、設計/実装上の欠陥から機密情報(flag など)を取得する。
2.2 代表的な問題
- SQLインジェクション
- XSS(反射/格納/DOM)
- ファイルアップロード脆弱性
- 逆シリアライズ問題
- SSRF
- コマンド実行(RCE)
- 認証/セッション不備
- アクセス制御不備(権限昇格・越権)
- SSTI
- パストラバーサル / LFI/RFI
2.3 必要知識
- HTTP/HTTPS基礎
- 主要バックエンドの挙動(Flask、Django、PHP、Node)
- SQL基礎
- 入力/処理/出力の安全モデル
- エンコード/デコード
2.4 よく使うツール
- Burp Suite
- ブラウザDevTools
- sqlmap
- ffuf / dirsearch
- Postman / curl
2.5 解法の基本フロー
- 画面・API・パラメータ・認可ロジックを棚卸し
- 入力可能点を特定
- 境界挙動(特殊文字、長大入力、型不一致)を確認
- エラー/応答から脆弱性タイプを判断し payload 構築
- 初期突破後に横展開(ファイル読み取り、権限昇格、内部探索)
3. Misc分野
3.1 コア
Miscは総合問題。情報処理力、スクリプト自動化、分野横断の発想力が問われる。
3.2 代表的な問題
- エンコード/デコード
- ステガノグラフィ
- 通信解析(pcap、HTTP/TCP)
- フォレンジック断片(ログ、圧縮、メタデータ)
- 自動化ミニゲーム/プロトコル対話
- QR/バーコード/キーボードログ/モールス等
3.3 必要知識
- ファイル形式構造(PNG/JPG/ZIP/PDF)
- ネットワーク基礎(TCP/HTTP/DNS)
- Linux CLI
- Python処理(正規表現、バイト列、バッチ処理)
3.4 よく使うツール
- CyberChef
- Wireshark / tshark
- binwalk / foremost
- stegsolve / zsteg / exiftool
- Python
3.5 解法の基本フロー
- アーティファクト種別を見極める
- メタデータ/構造(ヘッダ、フッタ、magic bytes)を確認
- 可逆変換を試す
- 反復作業は早めにスクリプト化
4. Crypto分野
4.1 コア
CTFのCryptoは、現代暗号の総当たりよりも、弱いパラメータ・実装ミス・運用ミスの悪用が中心。
4.2 代表的な問題
- 古典暗号
- RSA系脆弱性
- 共通鍵暗号の誤用(ECB、IV再利用、padding oracle)
- ハッシュ関連問題
- 予測可能乱数
4.3 必要知識
- 剰余演算、ユークリッド互除法、逆元
- 素数、オイラー関数、高速べき乗
- 暗号モード(ECB/CBC/CTR/GCM)
- 署名/認証基礎
4.4 よく使うツール
- Python +
pycryptodome - SageMath
- factordb / yafu
- RsaCtfTool
4.5 解法の基本フロー
- 数学問題か実装不備問題かを判定
- 既知/未知を整理
- 数学的関係を立て、可解性確認
- 弱点パラメータ/再利用を優先検証
5. Pwn分野
5.1 コア
バイナリのメモリ安全性欠陥を利用し、実行フローを制御して最終的に flag 取得または shell 奪取を目指す。
5.2 代表的な問題
- スタックオーバーフロー
- ヒープ攻撃
- フォーマット文字列脆弱性
- 整数オーバーフロー起点のOOBアクセス
- サンドボックス脱出(上級)
5.3 必要知識
- C言語メモリモデル
- x86/x64呼び出し規約
- ELF/動的リンク
- Linux/syscall基礎
- 防御機構(NX, Canary, PIE, RELRO, ASLR)
5.4 よく使うツール
- gdb + pwndbg/gef
- pwntools
- checksec
- IDA / Ghidra
- one_gadget / ropper
5.5 解法の基本フロー
checksecで保護機構確認- 制御可能入力と危険経路を特定
- クラッシュ点とオフセット制御を検証
- 保護機構に応じて攻撃チェーン選択
- ローカル成功後にリモート移植(libc差分・タイミング調整)
6. Reverse分野
6.1 コア
静的/動的解析でロジックを復元し、重要データ・検証式・鍵を取り出す。
6.2 代表的な問題
- 文字列検証と軽い難読化
- 制御フロー平坦化/偽分岐
- 逆デバッグ/逆サンドボックス
- 独自暗号の復元
- APK/so/スクリプト混合解析
6.3 必要知識
- アセンブリ基礎
- コンパイラ最適化の影響
- PE/ELF/APK構造
- ブレークポイント追跡
6.4 よく使うツール
- IDA Pro / Ghidra
- x64dbg / OllyDbg
- gdb
- JADX / apktool
- Frida
6.5 解法の基本フロー
- まず実行してI/O挙動確認
- 重要関数を静的に特定
- ブレークポイントで仮説検証
- アルゴリズム復元またはパッチで検証回避
7. AIセキュリティ分野
7.1 コア
モデル・データ・推論パイプライン・統合層に対する攻撃と防御を扱う。
7.2 代表的な問題
- Prompt Injection
- Jailbreak
- Data Leakage
- Tool Abuse / 権限逸脱
- RAG汚染
- Model Extraction / Membership Inference
- 敵対的サンプル
7.3 必要知識
- LLMのロール階層(system/user/assistant)
- RAGパイプライン
- Agentのツール呼び出しと権限境界
- 入力フィルタ、出力監査、ポリシーエンジン
7.4 よく使う方法
- 手動ペイロード設計
- モデル入力出力とツール呼び出しログ監査
- Red Teamベンチマーク
- 自動注入テスト
7.5 解法の基本フロー
- システム境界の把握
- 低リスク探索
- レイヤー別に突破
- 再現性の確認
- 対策提示(最小権限・文脈分離・ガードレール)
7.6 防御チェックリスト
- System命令はユーザー入力で上書き不可
- 取得文脈とユーザー入力の分離
- ツール呼び出しの権限ゲート
- 高リスク出力のポリシー検査と人手確認
- フルログ保全による再現/追跡
8. チーム分業の提案
- Web: APIと業務ロジック脆弱性
- Pwn: バイナリ攻撃チェーン
- Reverse: アルゴリズム復元と補助スクリプト
- Crypto: 数学/暗号問題と検証スクリプト
- Misc: 通信・ステガノ・雑多問題の高速処理
- AIセキュリティ: モデル/Agent攻撃面
成熟チームでは各分野に主担当とバックアップを置くのが効果的。
9. まとめ
CTFはツール競争ではなく、知識構造・分析手法・自動化力・チーム連携の総合力です。
まずは1〜2分野を深掘りして安定得点源を作り、その後に他分野を広げると効率よく成長できます。

コメントを残す