実践編へのレベルアップ|複数の技術を繋ぐ考え方
「はじめてのCTF」全20話を完走したあなたへ。ここから始まる「CTF実践編」全10話は、1つの問題の中で複数の技術を繋いで解く、本格的なCTFに近い構成に挑戦します。第1話は、前作で学んだ2つの技術を繋ぐウォームアップ問題です。
📋 目次
🔄 「はじめてのCTF」から「CTF実践編」へ
前作の続き、ここからは「繋ぐ力」を鍛えます
前作20話、お疲れさまでした
「はじめてのCTF」全20話では、Application・Elements・Network・Sources・Debuggerという開発者ツールの基本操作から、Base64やXORといった基礎暗号、検索演算子を使ったOSINT、ファイルのマジックバイトやパケット解析まで、CTFの土台となる「個別の技術」を1話1テクニックずつ体験してきました。
「CTF実践編」全10話は、その続きです。ただし、ここから先のゴールは「新しいテクニックを覚える」ことだけではありません。本物のCTF(Jeopardy形式の競技)で実際に出題される問題は、たいてい「1つの技術だけ」では解けません。1つの問題の中に複数の手がかり・複数の弱点が仕込まれていて、それらを正しい順番で繋ぎ合わせることで、ようやく1つのフラグに辿り着きます。本シリーズでは、そうした「繋ぐ力」を10話かけて鍛えていきます。
この話の前提知識
第1話では、前作で学んだ次の2つの技術を組み合わせます。不安な場合は先に読み返しておくと、チャレンジがスムーズに進みます。
本シリーズの対象読者は、前作『はじめてのCTF』を読み終えた方、またはブラウザの開発者ツールでCookieを書き換えたり、Base64をデコードしたりした経験がある方です。前作の知識を前提に話を進めるため、第2話以降も毎回「前提知識ボックス」で関連する話を案内します。
🧩 本格CTFの構造|ステージ・部分点・ヒントコスト
1問の中に複数の「やること」が仕込まれている
実際のJeopardy形式のCTF競技では、Web・Crypto・Forensics・Reversing・Pwn・Miscといったカテゴリごとに問題が用意されます。初心者向けの問題は1つの技術で解けますが、中級以上の問題になると、1つの問題の中に複数のサブタスクが直列・並列に絡み合っていることが普通です。たとえば「まず認証を突破し、次にその権限で隠しファイルを見つけ、最後にその中身を解読する」といった具合に、段階を踏んで初めてフラグに到達します。
前作のような「1話1テクニック」の問題は、操作を1つ覚えれば解けます。一方で本シリーズの問題は、ステージ1をクリアしないとステージ2が見えてきません。途中で詰まった場合に備えて、各ステージにヒントを用意していますが、ヒントを開くとそのステージを含むエピソード全体のスコアが下がります。
部分点があるから、挫折しにくい
本シリーズのサブフラグは「途中まで解けた」という記録もちゃんと残ります。全ステージを一度に解けなくても、ステージ1だけクリアした状態でいったん離れて、後日ステージ2に再チャレンジすることができます。本格的なCTF競技でも、難しい問題は何日もかけて少しずつ攻略するのが普通です。
📊 前作との違い|スコアリングとサブフラグの仕組み
正答率・クリア率に加えて「スコア」が登場
前作と本シリーズの違いを表にまとめました。基本のエンジン(ブラウザ完結・SHA-256照合・localStorage保存)は同じですが、1話あたりの構成とヒントの扱いが変わります。
| 項目 | はじめてのCTF(前作) | CTF実践編(本シリーズ) |
|---|---|---|
| 対象読者 | セキュリティ未経験〜初級 | 前作完走者・基礎操作を知っている人 |
| 1話の構成 | 1テクニック=1フラグ | 2〜5ステージ=複数サブフラグ |
| ヒントの出し方 | 3回不正解で自動的に無料開放 | いつでも開けるが1個につき-15pt |
| スコア表示 | 正答率/クリア率 | 正答率/クリア率/スコア(100点満点) |
| 難易度の目安 | ★1〜★3 | ★3〜★5 |
| 学べるテーマ | 個別の操作・概念(DevTools/暗号/OSINT/フォレンジック基礎) | 複数テーマを組み合わせた侵入経路(IDOR/JWT/RSA/プロトタイプ汚染など) |
スコアは、エピソードごとに基礎点100点から始まり、ヒントを1個開くごとに-15点されます。下限は0点なので、ヒントを使い切ってもスコアがマイナスになることはありません。スコアは全ステージを解決した瞬間に1回だけ確定し、その後ヒントを見返してもスコアは変わりません。
シリーズ合計スコアは1000点満点
10話分のスコアを合計すると、シリーズ全体で最大1000点になります。未解決の話は0点として計算されるので、まずは1話ずつ確実にクリアしていくことが、合計スコアを伸ばす一番の方法です。
🔐 実践チャレンジ:トレーニングポータルに侵入せよ
2つのステージを繋いで最終フラグへ
架空の研修サイト「実践編トレーニングポータル」には、ctfadv_roleというCookieが自動的に設定されており、初期値はtrainee(研修生)です。これをstaffに書き換えると、管理者ビューが解放されます。
チャレンジの手順
① F12で開発者ツールを開く → ② Applicationタブ→Cookies→ドメイン名をクリック → ③ ctfadv_roleの値をstaffに書き換える → ④ 「状態を再確認する」ボタンを押す → ⑤ 管理者ビューに表示されたチェックポイントコードをステージ1に入力 → ⑥ ステージ2が解放されたら、表示されたBase64文字列をConsoleでatob()デコードし、出てきた文字列をステージ2に入力。
現在の ctfadv_role Cookie の値:
(読み込み中…)
🔓 管理者ビューへようこそ
チェックポイントコード:
STAFF_4CCESS_OK
経路ログ(エンコード済み・ステージ2で使用):
Q1RGe0NINDFOX1RXMF9TSzFMTFN9
⚠️ 本物のサイトではサーバー側で権限検証を行うため、Cookie書き換えだけでは突破できません。これはCTF学習用のシナリオです。
ステージ1をクリアすると、ステージ2が解放されます。両方クリアした時点でスコアが確定します。
📊 ステージ進捗: 0/2|挑戦回数: 0回
上のポータルでctfadv_roleをstaffに書き換え、管理者ビューに表示された「チェックポイントコード」を入力してください。
F12→Application→Cookies でctfadv_roleの値をtraineeからstaffに書き換え、「状態を再確認する」ボタンを押してください(第7話と同じ操作です)。
管理者ビューに表示された経路ログ(Base64)をデコードしてください。
Q1RGe0NINDFOX1RXMF9TSzFMTFN9
Consoleでatob('Q1RGe0NINDFOX1RXMF9TSzFMTFN9')を実行すると、デコード結果がそのまま表示されます。出てきた文字列をそのまま下に入力してください。
Base64は暗号ではなく符号化です。第10話で使ったatob()関数にそのまま渡せばデコードできます(暗号化されていないので「鍵」は不要です)。
🔗 なぜ「繋ぐ」と実戦的になるのか
単体の弱点は小さくても、繋げば侵入経路になる
Cookieの値をそのまま信頼してしまう実装も、Base64のような単純な符号化を「暗号」と誤解して使ってしまう実装も、それぞれ単体で見れば「よくある初歩的なミス」です。しかし実際の攻撃では、こうした小さな弱点を1つずつ繋いでいくことで、最終的に大きな被害(個人情報の漏洩、権限の乗っ取りなど)に発展します。セキュリティの世界では、この一連の繋がりを「攻撃チェーン(kill chain)」と呼びます。
防御側も「チェーン」で考える
攻撃者が複数の弱点を繋ぐなら、防御側も「どこか1か所を直したから安全」とは考えません。チェーンのどこか1つの輪を断ち切れば全体の侵入経路が崩れるため、実務のセキュリティ対策では「多層防御」という考え方が重視されます。CTFで繋ぐ練習をすることは、攻撃側の発想を理解し、結果として防御の優先順位を考える力にもつながります。
第2話からは、本シリーズで初めて登場する技術にも取り組みます。IDOR(オブジェクト参照の連鎖的な書き換え)、JWTの偽造、プロトタイプ汚染、RSA暗号の弱点、ECBモードのパターン漏洩など、いずれも実際の本格的なCTFやバグバウンティでも頻出するテーマです。1話ごとに新しい武器を増やしながら、最終的には第9話・第10話で複数の技術を1つの侵入経路に統合します。
📝 まとめ+FAQ+次回予告
レベルアップの準備は完了です
第1話では、新しい技術は教えずに、前作で学んだCookie書き換えとBase64解読という2つの技術を繋ぐ体験をしました。次回からは新しいテーマが続々登場します。1話ずつ確実にクリアして、シリーズ合計スコアを伸ばしていきましょう。
・前作は「1話1テクニック」、実践編は「1話に複数ステージ」という構成
・ステージは直列構成で、前段をクリアしないと次が見えない
・ヒントはいつでも開けるが、1個につき-15点の減点
・スコアは全ステージ解決時に1回だけ確定し、後から変動しない
・進捗・スコアは前作と同じくlocalStorageのみに保存、外部送信なし
Q. 前作「はじめてのCTF」を読んでいないと実践編は理解できませんか?
各話の前提となる技術は、話ごとに「前提知識ボックス」で前作の該当話を明記しています。本話であれば第7話(Cookie操作)と第10話(Base64解読)が前提です。不安な場合は先にそちらを読んでから挑戦すると理解がスムーズです。
Q. ヒントを使うとスコアが下がるのは、ちょっと嫌な感じがします…
実際の本格的なCTF大会でも、ヒントを使うと減点される、あるいは課金制になっている大会は珍しくありません。スコアは他人と競うランキングではなく、あくまであなた自身の学習記録です。詰まって離脱してしまうより、減点を受け入れてヒントを使い、最後まで解き切る経験の方が学習効果は高いと考えています。
Q. スコアやサブフラグの達成状況はどこかに送信されますか?
送信されません。前作と同様、すべてブラウザのlocalStorage(あなたの端末内)だけに保存され、外部のサーバーには一切送信されません。ブラウザの履歴を消去したり、別の端末・別のブラウザでアクセスすると記録は引き継がれません。
Q. 全10話を終えたら、その先はどう進めばいいですか?
前作の最終回でも紹介したpicoCTF・TryHackMe・OverTheWireのような実在のCTF学習プラットフォームに挑戦するのがおすすめです。本シリーズで体験するIDOR・JWT偽造・RSA・プロトタイプ汚染といったテーマは、これらのプラットフォームの初〜中級問題でも頻出します。
IDORで他人の情報を覗く|権限昇格チェーン
オブジェクト参照の番号を1段、2段と書き換えていくと、本来は見えないはずの情報に到達できてしまう「IDOR」という脆弱性を体験します。
📚 参考情報
- 「はじめてのCTF」第7話・第10話(本話の前提知識)
- OWASP Top 10(権限管理・認証関連の分類)


コメント