21 人が閲覧(直近 30 日) セキュリティ

CTFとは?形式・ジャンルと練習環境の作り方をコード付きで解説

CTFとは?形式・ジャンルと練習環境の作り方をコード付きで解説

CTF(Capture The Flag)は、システムに隠された「フラグ」と呼ばれる文字列を、セキュリティの技術を駆使して奪い取り、その得点を競う競技です。攻撃側の視点で脆弱性を見つけ、暗号を解き、バイナリを読み解く一連の作業を、点数という明快なゴールに落とし込んだ実践訓練の場だと捉えると分かりやすいでしょう。この記事では、CTFがどんなルールで成り立つのか、Jeopardy形式とAttack-Defense形式の違い、Web・Pwn・Crypto・Reversing・Forensicsといった出題ジャンルと実務スキルの対応を整理します。そのうえで、Kali LinuxのメタパッケージからpwntoolsやGhidraの導入まで、手元で問題を解き始めるまでのコマンドを具体的に示します。練習環境の外へ手を出さないための不正アクセス禁止法の線引き、そして受託開発や人材育成でCTFをどう扱うかまで、手を動かす側の目線でまとめました。

まとめ:CTFはセキュリティ攻防を疑似体験して実践力を鍛える競技

CTFを一言でいうと、守る側では得にくい「攻撃者の視点」を安全な環境で身につけるための競技です。実在のシステムを壊すことなく、意図的に穴を仕込んだ問題を相手に、脆弱性の発見から権限奪取までの流れを疑似体験できます。座学で得た知識を、実際に手を動かして得点へ変換する構造になっているのが特徴といえます。

実装者にとっての位置づけとしては、CTFは「攻める練習を通じて守りの設計を鍛える装置」です。SQLインジェクションやバッファオーバーフローがどう成立するかを攻撃側で体験しておくと、コードを書くときに危うい箇所へ自然と目が向くようになります。始めるための道具立ても軽く、Kali Linuxのメタパッケージを1行入れ、OverTheWireのBanditへSSHでつなげば、その日のうちに1問目のフラグへ手が届きます。

ただしCTFの問題は現実より条件が整えられているため、競技力がそのまま実務の脆弱性診断の実力に直結するわけではありません。この差を踏まえたうえで、教育・採用・スキル維持の道具として条件付きで採り入れるのが現実的な扱い方になります。もう一つ先に押さえておきたいのは法律の線です。不正アクセス禁止法(平成11年法律第128号)の第3条は不正アクセス行為そのものを禁じており、練習の対象は大会が用意した環境と自前の検証環境に限られます。

CTFの定義と目的=隠されたフラグを奪取してセキュリティ実力を競う競技

CTFは、もともと「旗取り合戦」を指す言葉を、サイバーセキュリティの競技へ転用したものです。出題者が用意したサーバーやファイル、暗号文などの中に、あらかじめ答えとなる文字列が隠されています。参加者はセキュリティの技術を使ってそれを見つけ出し、採点システムへ提出して得点を得ます。

Capture The Flagの語源とフラグを取得して得点する基本ルール

フラグは、多くの場合flag{...}のような決まった書式の文字列で表されます。この書式を手掛かりに、問題ごとに仕込まれた答えを探し当てるのが基本の流れです。見つけたフラグを提出すると採点システムが正誤を判定し、問題の難度に応じた点数が加算されます。制限時間内に積み上げた合計点で順位が決まるため、限られた時間でどの問題に手を付けるかという戦略も勝敗を左右します。ルール自体は明快で、初参加でもゴールを見失いにくい設計になっている点が、多くの人を引き寄せてきた理由の一つです。

CTFが技術者の教育や採用選考の現場で実力測定に使われる背景と狙い

CTFが広がった背景には、セキュリティの実力を客観的に測りにくいという事情があります。資格や座学の点数では、実際に手が動くかどうかまでは見えません。その点、CTFは「フラグを取れたか」という結果が明確に残るため、企業の採用選考やチーム内の力量把握に使いやすい指標になります。教育の面でも、正解が用意された安全な環境で攻撃手法を試せるので、実システムを傷つけずに若手を鍛えられる点も見逃せません。国内でも省庁や企業が主催する大会が開かれており、代表例として防衛省サイバーコンテスト(国家CTF大会)のような取り組みが、人材の発掘と育成を兼ねて実施されています。

Jeopardy形式とAttack-Defense形式に大別される競技の進め方

CTFの進め方は、大きく二つの方式に分かれます。個人でも取り組みやすいクイズ型と、チーム同士が攻防を繰り広げる対戦型で、必要になる技術も心構えも異なります。まずはこの二つの違いを押さえておけば、参加する大会を選ぶときの判断がしやすいはずです。

Jeopardy形式=ジャンル別の問題を解いて得点を積み上げる方式

Jeopardy形式は、クイズ番組のように分野と配点が並んだ問題表から、解けるものを選んで得点を積み上げる方式です。Web、暗号、バイナリといったジャンルごとに難度別の問題が用意され、参加者は自分の得意分野から着手できます。ほかのチームを直接攻撃する要素がないため、初心者や個人参加でも取り組みやすく、常設のオンライン大会の多くがこの形式を採ります。時間内にどの問題を捨てるかという取捨選択が、そのまま順位に響いてくるのが面白いところです。

Attack-Defense形式=攻撃と防御を同時に競う実戦的な方式

Attack-Defense形式は、各チームに同じ構成のサーバーが割り当てられ、他チームのサーバーを攻めながら自陣を守る対戦型です。相手の脆弱性を突いてフラグを奪えば得点になり、同時に自分のサーバーの穴を塞がなければ奪われて失点します。攻撃と防御を並行して回す必要があるため、脆弱性の発見力に加えて、パッチ適用や監視といった運用の技術まで問われます。実戦に近い緊張感があり、上級者向けの大会で採用されることが多い方式です。

Web・Pwn・Crypto・Reversingなど出題ジャンルと実務スキルの対応

CTFの問題は、いくつかのジャンルに分類されます。それぞれが実務のどのスキルと結び付くかは、練習の順番を決めるうえで有効な手掛かりになるでしょう。ここでは代表的なジャンルを、実装や運用の現場との対応づけで整理します。

WebとPwnはアプリやバイナリの脆弱性を突く攻撃寄りのジャンル

Webは、ウェブアプリケーションの脆弱性を突くジャンルです。SQLインジェクション、クロスサイトスクリプティング、認証やセッション管理の不備などを見つけてフラグへたどり着きます。出題の下敷きになる脆弱性の分類は、IPAの「安全なウェブサイトの作り方」改訂第7版が挙げる11種類とほぼ重なり、SQLインジェクションからアクセス制御の欠落までが対象です。攻撃側で仕組みを体験しておくと、自分がコードを書くときに危険な入力の扱いへ意識が向くようになります。Pwn(Pwnable)は、サーバー上で動くプログラムの脆弱性を突いて権限を奪う、いわば花形のジャンルです。バッファオーバーフローやメモリ破壊を足掛かりに任意コードを実行させる問題が中心で、低レイヤーの理解が問われます。Webの問題では、通信を書き換えたり脆弱性を探ったりする道具としてBurp Suiteのようなプロキシツールがよく使われます。

CryptoとReversingは暗号解読と解析の技術を問うジャンル

Crypto(暗号)は、暗号化されたフラグと、暗号方式や鍵の断片といった手掛かりから元の値を復元するジャンルです。既知の暗号アルゴリズムの弱点や、実装のミスを突いて解読へ持ち込む問題が多く、数学的な素養と手を動かす実装力の両方が試されます。Reversing(リバースエンジニアリング)は、与えられた実行ファイルを逆アセンブルして中の処理を読み解き、正しいフラグを導く条件を突き止めるジャンルです。解析の考え方は、マルウェアの動作分析や、仕様書のないバイナリの挙動把握といった実務にも通じます。逆向きに解析する発想そのものは、リバースエンジニアリングの技術として業務でも扱われる領域です。

ForensicsとMiscは調査力と発想力が試される出題領域

Forensics(フォレンジック)は、パケットキャプチャやディスクイメージ、ログといった証拠データを調べ、隠された情報を掘り起こすジャンルです。インシデント発生後に何が起きたかを追う実務の調査と、着眼点がよく似ています。証拠から事実を組み立てる手順は、実際のデジタルフォレンジックの考え方と地続きです。Misc(その他)は、上記のどれにも当てはまらない雑多な問題の受け皿で、パズル的なひらめきや幅広い知識が求められます。分類しづらい代わりに、思わぬ発想が突破口になる面白さがあります。

Kali Linuxで練習環境を整えてOverTheWireへSSH接続する作業手順

ここからは手を動かす工程です。CTFの練習は、母艦の環境を汚さずにツールを揃え、外部の練習サーバーへ接続するところから始まります。仮想マシンかコンテナ上にセキュリティ検証向けディストリビューションを用意し、ジャンル別のツール群をまとめて入れる流れが最短経路になります。

kali-tools系メタパッケージでジャンル別の道具を入れるコマンド

Kali Linuxは、ジャンルごとの道具をまとめたメタパッケージを公式に用意しています。Kali公式ドキュメントのメタパッケージ一覧に並ぶのは、Web向けのkali-tools-web、Reversing向けのkali-tools-reverse-engineering、Pwn向けのkali-tools-exploitation、Forensics向けのkali-tools-forensicsです。全部入りのkali-linux-everythingを選ぶとディスクを大きく食うため、解きたいジャンルに絞って入れるほうが扱いやすくなります。導入前にパッケージ一覧を更新しておくと、依存の解決に失敗しにくくなります。


sudo apt update
sudo apt full-upgrade -y

# 解きたいジャンルに絞って入れる(全部入りは数十GB規模になる)
sudo apt install -y kali-tools-web kali-tools-reverse-engineering
sudo apt install -y kali-tools-exploitation kali-tools-forensics

Kali自体の成り立ちや、母艦へ直接入れるのか仮想マシンに閉じるのかという判断は、Kali Linuxとは?できること・インストール・危険性で扱っています。Windows機で試すなら、WSL2上のディストリビューションに同じメタパッケージを入れる構成でも大半の問題は解けます。

Banditのlevel0へssh接続して最初のフラグを取り出す手順

ツールが入ったら、いきなり難問へ挑むより、Linuxのコマンド操作に慣れる教材から入るほうが挫折しにくいでしょう。OverTheWireのBanditは、SSHで接続してレベルごとのパスワードを探す形式のwargameです。公式のLevel 0のページには、接続先がbandit.labs.overthewire.org、ポートが2220、ユーザー名とパスワードがともにbandit0であることが明記されています。接続後はlsでファイルを探し、中身を読んで次のレベルの資格情報を取り出す、という繰り返しになります。


ssh -p 2220 [email protected]
# password: bandit0

ls
cat readme

Banditは1レベルあたり数分で片付く問題から始まるので、パイプやリダイレクト、権限、圧縮形式の扱いといった土台が短時間で身につきます。ここでコマンドの手が動くようになってからWebやPwnへ進むと、問題そのものの難しさだけに集中できます。

pwntoolsとGhidraで問題を解く実装手順とバージョン別の前提

Pwn(Pwnable)とReversingは、道具の準備でつまずきやすいジャンルです。前者は攻撃コードを書くためのライブラリ、後者は逆アセンブラが必要になります。どちらも無償で入手でき、前提となるバージョン条件だけ押さえておけば導入は短時間で済みます。

pwntoolsでリモート問題へ接続しフラグを受け取るPythonコード

pwntoolsは、Pwn問題の定番になっているPython製のエクスプロイト開発ライブラリです。公式ドキュメントではインストール手順としてpython3 -m pip install --upgrade pwntoolsが案内されており、Python2向けの導入も残るものの、開発側はPython3の使用を強く推奨しています。PyPIの配布は4.15系が最新(2026年9月時点)です。remote()でサーバーへつなぎ、recvuntil()でプロンプトを待ち、sendline()でペイロードを送る、という3つの呼び出しが解答スクリプトの骨格になります。


python3 -m pip install --upgrade pwntools

# solve.py の骨格
from pwn import *

io = remote('problem.example.net', 1337)
io.recvuntil(b'input: ')
io.sendline(b'A' * 40 + p64(0x401196))
log.info(io.recvline().decode())
io.interactive()

ローカルの実行ファイルを相手にするときはremote()をprocess()へ差し替えるだけで、同じスクリプトが手元でも走ります。オフセットや戻りアドレスは問題ごとに変わるため、まずprocess()で当たりを付け、確定してからremote()へ向けるのが安全な順序です。

Ghidra 12.1系で配布バイナリを逆アセンブルする導入手順

Reversing問題では、配布された実行ファイルを逆アセンブルして処理を読みます。Ghidraは、米国国家安全保障局の研究部門が開発・保守するリバースエンジニアリングのフレームワークで、Windows・macOS・Linuxのコンパイル済みコードを解析できる基盤です。公式リポジトリの記載では、配布されているビルド済みリリースを使う場合は64ビットのJDK 21が必要で、ソースから開発ビルドする場合はJDK 25が要ります。リリースは12.1系まで進んでおり、12.1.3が2026年8月18日に公開されています。

導入は、リリースのzipを展開してghidraRunを起動するだけです。プロジェクトを作って配布バイナリを取り込むと自動解析が走り、逆コンパイル結果のC風の疑似コードが右ペインに出ます。フラグの判定条件はstrcmpや比較命令の周辺に現れることが多いので、文字列一覧から怪しいリテラルをたどって関数へ飛ぶ読み方が定石になります。JDKのバージョンが古いままだと起動時に弾かれるため、Javaの入れ替えを先に済ませておきましょう。

常設プラットフォームで基礎を固めて期間限定の大会へ進む学習順序

環境と道具が揃ったら、次は問題の供給元を決めます。開催期間が決まった大会に飛び込む前に、いつでも挑戦できる常設の練習場で基礎を固められる点がCTFの入りやすさです。ここでは入り口の選び方と、大会参加へ進む順序を示します。解説付きのルームで手順をなぞりながら進めたい場合は、TryHackMeのAttackBoxとVPN接続・料金の実額も常設の入り口として比較対象になります。

CyLab Security Academyへ移ったpicoCTFで基礎を固める手順

初心者向けの常設プラットフォームとして長く定番だったのが、カーネギーメロン大学のpicoCTFです。2026年9月時点でpicoCTF.orgのトップページは移行の告知に置き換わり、学習の場は同大学の無償プラットフォームであるCyLab Security Academyへ引き継がれています。告知には、2026年5月8日より前に作成したpicoCTFの資格情報でそのままログインでき、進捗・実績・履歴が保持されると書かれています。教育目的で設計されているためチュートリアルから難度が段階的に上がり、解説も添えられているので独学でも詰まりにくいでしょう。

国内の入り口を選ぶなら、SECCONの初心者向け企画が候補になります。2026年度はSECCON 15として、SECCON Beginners CTF 2026や東京・大阪での対面イベント、CTF for GIRLSのワークショップが告知済みです。日本語で問題と解説に触れられるため、英語の問題文で手が止まる段階の学習者には負担が軽くなります。

CTFtimeで開催予定の大会を選びチーム参加へ踏み出す進め方

得意ジャンルが見えてきたら、期間限定の大会へ移ります。世界中の開催情報はCTFtimeの開催予定一覧に集約されており、開催日程・形式(JeopardyかAttack-Defense)・開催地・重み付けを見比べて選べます。初参加なら、重み付けの低いオンラインのJeopardy形式で、週末に収まる24時間前後の大会が現実的です。

参加は個人でも可能ですが、ジャンルの守備範囲を分担できるチームのほうが得点は伸びます。3〜4人で「WebとForensicsを見る人」「PwnとReversingを見る人」を分け、解けた問題の手順を共有ドキュメントへ残しておくと、次の大会でそのまま再利用できる資産です。まずは一問でも自力でフラグを取れた体験を積むことが、続けるうえでの支えになります。

不正アクセス禁止法の条文で線引きする練習範囲と検証環境の作り方

CTFで身につく技術は、向ける先を間違えると犯罪になります。ここは感覚ではなく条文で線を引いておくべき箇所です。練習で許される範囲と、自前の検証環境をどう作るかを、法令の実際の記述に沿って確認します。

第3条の禁止規定と第11条の罰則が学習者に課す実務上の制約と範囲

不正アクセス行為の禁止等に関する法律(平成11年法律第128号)の第3条は、e-Gov法令検索の条文で「何人も、不正アクセス行為をしてはならない」と定めています。第11条の罰則は、第3条に違反した者を「三年以下の拘禁刑又は百万円以下の罰金に処する」としており、2025年6月1日施行の改正で従来の「懲役」が「拘禁刑」へ置き換わりました。他人の識別符号を不正に取得する行為は第4条で禁じられ、こちらは第12条により一年以下の拘禁刑または五十万円以下の罰金の対象になります。

実務上の制約はひとつです。攻撃の練習対象は、大会が許可した環境と自分の管理下にある環境に限る。他社のサイトへ「試しに」SQLインジェクションを打つ行為は、成功したかどうかに関係なく法に触れます。社内演習を企画する場合も、対象を演習用に立てたホストへ明示的に限定し、参加者へ書面で範囲を通知しておくと事故を防げます。

IPAの資料をもとに自前の検証環境で攻撃手法を試す構成の作り方

自前の検証環境は、意図的に脆弱なアプリを閉じたネットワークへ置く構成が基本です。IPAの「安全なウェブサイトの作り方」改訂第7版は第1章で11種類の脆弱性を挙げ、第3章ではそのうち8種類について実装例と修正方法を示しています。この一覧を再現対象のチェックリストとして使えば、攻撃と修正を一往復させる演習が組めます。

ネットワークはホストオンリーに寄せ、検証用コンテナから外部へ出ていく通信を止めておきましょう。攻撃側で覚えた手口を防御の実装へ折り返す流れは、セキュアコーディングの10原則と主要脆弱性のコード対策と突き合わせると整理しやすくなります。パケットを読む練習には、解析結果をAIへ渡すWireshark MCPのような組み合わせも選べます。

受託開発と人材育成の現場でCTFをどう扱うか=採用条件と見送り場面

ここからは、企業やチームがCTFを事業へ組み込む視点での判断です。競技としての面白さと、業務での有用性は必ずしも一致しません。どんな条件なら採り入れる価値があり、どんな場面では距離を置くべきかを、条件付きで言い切ります。

CTFを人材育成や採用選考に採り入れてよい条件と向いている場面

CTFを採り入れてよいのは、目的を「攻撃者視点の獲得」と「実力の可視化」に絞れる場面です。セキュリティ製品の開発や、脆弱性を突かれやすいプロダクトを扱うチームでは、攻める側の発想を持つ技術者がいると設計の勘所が変わります。採用選考でも、フラグを取れたかという結果は誇張の効かない実力の証拠になり、面接だけでは測りにくい手の速さを補えます。社内で小規模な演習を定期開催し、若手が安全に攻撃手法へ触れる場を設けるのも、育成として理にかなった採り入れ方です。まずは目的を一つに定め、そこへ効く問題ジャンルへ絞って始めるのが、投じた時間を無駄にしないコツになります。

CTFdで社内演習を立ち上げて問題と権限を設計する構築手順と注意

社内演習の採点基盤には、CTFdがよく選ばれます。公式ドキュメントの導入手順では、リポジトリをクローンしてdocker-compose.ymlのSECRET_KEYを設定し、docker compose upで起動する流れが案内されています。鍵をランダムなバイト列からファイルとして生成する方法も、同じページに併記済みです。リリースは3.8系まで進んでおり、3.8.7が2026年8月19日に公開されています。


git clone https://github.com/CTFd/CTFd.git
cd CTFd

# SECRET_KEY をランダム生成してから起動する
head -c 64 /dev/urandom > .ctfd_secret_key
docker compose up -d

問題の自作では、出題範囲を演習用ホストへ閉じ、参加者アカウントに本番系の権限を一切与えない設計にします。自社プロダクトのコードをそのまま題材にすると、演習が実質的な本番診断になり、範囲外へ踏み込む事故を避けられません。過去に修正済みの脆弱性を再現した簡易版を題材にすると、教材としての価値を保ったまま範囲を管理できます。

CTFのスキルを過信せず実務の脆弱性診断と切り分ける見極め方

一方で、CTFの成績を実務のセキュリティ品質そのものと見なすのは見送るべきです。CTFの問題は解が存在する前提で作られ、対象範囲も限定されています。現実の脆弱性診断は、どこに穴があるか分からない広い対象を、網羅性と再現性を担保しながら調べる作業で、報告書の品質や運用への配慮まで問われる専門の工程です。手法の体系や実施の流れはペネトレーションテストの手法・種類・実施の流れを見比べると差が分かります。競技力が高い人が診断も得意とは限らず、逆に地道な検証が得意な人がCTFで目立たないこともあります。両者を切り分け、CTFは「素養と意欲を測る入り口」、実務の診断は「体系立てた別の専門技能」と位置づけるのが健全な見極め方です。私たちが受託で提供する脆弱性診断・セキュリティ診断も、競技とは別に、網羅性と再現性を設計した手順で実施しています。攻撃者視点を業務に応用する道としては、企業のプログラムに参加してバグを報告するGitHubバグバウンティのような場も、実戦的な選択肢になります。

よくある質問

CTFの始め方や実務との関係について、参加を検討する現場で挙がりやすい質問に答えます。

CTFは未経験者でも参加できますか?

参加できます。まずはOverTheWireのBanditのように、SSHで接続してLinuxのコマンド操作から慣れる教材が入り口に向いた選択です。接続先はbandit.labs.overthewire.orgのポート2220で、ユーザー名とパスワードはともにbandit0から始まります。ここで手が動くようになってから、常設プラットフォームの初心者向け問題へ進むと無理がありません。本番の大会は、基礎に慣れてからで十分でしょう。

CTFで身につくスキルは実務のどこで役立ちますか?

攻撃者視点でのコードやシステムの読み方が、設計とレビューに効いてきます。脆弱性がどう成立するかを攻める側で体験しておくと、実装時に危うい入力の扱いへ自然と目が向きます。IPAの「安全なウェブサイトの作り方」が挙げる11種類の脆弱性は、Webジャンルの出題範囲とほぼ重なるため、演習の成果を防御側の実装へ折り返しやすい構造です。ただし競技力がそのまま実務の脆弱性診断の実力になるわけではないため、素養や意欲を測る入り口と位置づけましょう。

CTFを始めるのに必要なツールと環境は何ですか?

仮想マシンかWSL2上のKali Linuxを1台用意し、ジャンル別のメタパッケージを入れるのが最短です。Web向けならkali-tools-web、Reversing向けならkali-tools-reverse-engineeringを選びます。Pwn問題ではPython製のpwntools(4.15系)をpipで導入し、Reversing問題ではGhidra 12.1系を使います。Ghidraは配布ビルドの起動に64ビットのJDK 21が必要なので、Javaの版を先に確認しておくと詰まりません。

常設のCTFプラットフォームは何から始めるのがよいですか?

教育目的で設計された、初心者向けの常設プラットフォームから入るのが無理のない順序です。長年定番だったpicoCTFは、2026年9月時点でカーネギーメロン大学のCyLab Security Academyへ学習の場が移り、2026年5月8日より前に作った資格情報はそのまま使えます。日本語で取り組みたい場合は、SECCON Beginners CTFのような国内の初心者向け大会も候補になります。得意ジャンルが見えたらCTFtimeで大会を選び、チームで挑む段階へ進みましょう。

CTFで学んだ攻撃手法を試してよい範囲はどこまでですか?

大会が用意した環境と、自分の管理下にある検証環境の中だけです。不正アクセス行為の禁止等に関する法律の第3条は不正アクセス行為そのものを禁じ、第11条は違反者を三年以下の拘禁刑または百万円以下の罰金に処すと定めています。許可のない他社システムへ試す行為は、結果として侵入できなかった場合でも法に触れます。検証環境はホストオンリーのネットワークへ閉じ、外部への通信を止めておく構成が安全です。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.23 テックブログ Renta!不正アクセスでサービス停止:再開未定の現状と運営側の停止判断・証拠保全・段階的再開
  2. 2025.01.09 コラム アドレサブルCM(Addressable CM)とは?フジテレビで出る表示の意味・仕組みと視聴データの扱い
  3. 2026.10.21 テックブログ ふるさとチョイス不正アクセスで445万件流出:対象確認・パスワード変更と再開時期
  4. 2025.12.10 コラム 今の50代は何世代?バブル世代・団塊ジュニア・氷河期の境目と特徴
  5. 2026.07.09 テックブログ Muse Imageとは?Metaの画像生成AIの使い方・API料金(1枚0.01ドル)と日本での提供状況【2026年10月】

RELATED POSTS 関連記事

目次