【CTF実践編|第1話/全10話】実践編へのレベルアップ|複数の技術を繋ぐ考え方

⚡ CTF実践編|第1話/全10話

実践編へのレベルアップ|複数の技術を繋ぐ考え方

「はじめてのCTF」全20話を完走したあなたへ。ここから始まる「CTF実践編」全10話は、1つの問題の中で複数の技術を繋いで解く、本格的なCTFに近い構成に挑戦します。第1話は、前作で学んだ2つの技術を繋ぐウォームアップ問題です。

🔗 複数技術の連結 💡 ヒントは減点制 📊 スコアリング導入 ⭐ 難易度:★★★☆☆
01

🔄 「はじめての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話以降も毎回「前提知識ボックス」で関連する話を案内します。

02

🧩 本格CTFの構造|ステージ・部分点・ヒントコスト

1問の中に複数の「やること」が仕込まれている

実際のJeopardy形式のCTF競技では、Web・Crypto・Forensics・Reversing・Pwn・Miscといったカテゴリごとに問題が用意されます。初心者向けの問題は1つの技術で解けますが、中級以上の問題になると、1つの問題の中に複数のサブタスクが直列・並列に絡み合っていることが普通です。たとえば「まず認証を突破し、次にその権限で隠しファイルを見つけ、最後にその中身を解読する」といった具合に、段階を踏んで初めてフラグに到達します。

はじめてのCTF(前作) CTF実践編(本シリーズ) 1テクニック (例:Cookie書き換え) 1フラグ ヒント:3回失敗で無料開放 ステージ1 Cookie書き換え ヒント -15pt ステージ2 Base64解読 ヒント -15pt 確定フラグ 部分点:途中まで解けた分も記録される

前作のような「1話1テクニック」の問題は、操作を1つ覚えれば解けます。一方で本シリーズの問題は、ステージ1をクリアしないとステージ2が見えてきません。途中で詰まった場合に備えて、各ステージにヒントを用意していますが、ヒントを開くとそのステージを含むエピソード全体のスコアが下がります。

🎯

部分点があるから、挫折しにくい

本シリーズのサブフラグは「途中まで解けた」という記録もちゃんと残ります。全ステージを一度に解けなくても、ステージ1だけクリアした状態でいったん離れて、後日ステージ2に再チャレンジすることができます。本格的なCTF競技でも、難しい問題は何日もかけて少しずつ攻略するのが普通です。

03

📊 前作との違い|スコアリングとサブフラグの仕組み

正答率・クリア率に加えて「スコア」が登場

前作と本シリーズの違いを表にまとめました。基本のエンジン(ブラウザ完結・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回だけ確定し、その後ヒントを見返してもスコアは変わりません。

ヒント0個:スコア100pt 100pt ヒント1個:スコア85pt(-15pt) 85pt ヒント2個:スコア70pt(-15pt) 70pt ※ スコアは全ステージ解決時に1回だけ確定(その後は変動しない)
🏆

シリーズ合計スコアは1000点満点

10話分のスコアを合計すると、シリーズ全体で最大1000点になります。未解決の話は0点として計算されるので、まずは1話ずつ確実にクリアしていくことが、合計スコアを伸ばす一番の方法です。

04

🔐 実践チャレンジ:トレーニングポータルに侵入せよ

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学習用のシナリオです。

🧩 実践チャレンジ:2つのステージを繋いでフラグを掴め

ステージ1をクリアすると、ステージ2が解放されます。両方クリアした時点でスコアが確定します。

📊 ステージ進捗: 0/2|挑戦回数: 0回

1ステージ1:権限を昇格させる

上のポータルでctfadv_rolestaffに書き換え、管理者ビューに表示された「チェックポイントコード」を入力してください。

05

🔗 なぜ「繋ぐ」と実戦的になるのか

単体の弱点は小さくても、繋げば侵入経路になる

Cookieの値をそのまま信頼してしまう実装も、Base64のような単純な符号化を「暗号」と誤解して使ってしまう実装も、それぞれ単体で見れば「よくある初歩的なミス」です。しかし実際の攻撃では、こうした小さな弱点を1つずつ繋いでいくことで、最終的に大きな被害(個人情報の漏洩、権限の乗っ取りなど)に発展します。セキュリティの世界では、この一連の繋がりを「攻撃チェーン(kill chain)」と呼びます。

⚠️

防御側も「チェーン」で考える

攻撃者が複数の弱点を繋ぐなら、防御側も「どこか1か所を直したから安全」とは考えません。チェーンのどこか1つの輪を断ち切れば全体の侵入経路が崩れるため、実務のセキュリティ対策では「多層防御」という考え方が重視されます。CTFで繋ぐ練習をすることは、攻撃側の発想を理解し、結果として防御の優先順位を考える力にもつながります。

第2話からは、本シリーズで初めて登場する技術にも取り組みます。IDOR(オブジェクト参照の連鎖的な書き換え)、JWTの偽造、プロトタイプ汚染、RSA暗号の弱点、ECBモードのパターン漏洩など、いずれも実際の本格的なCTFやバグバウンティでも頻出するテーマです。1話ごとに新しい武器を増やしながら、最終的には第9話・第10話で複数の技術を1つの侵入経路に統合します。

06

📝 まとめ+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・プロトタイプ汚染といったテーマは、これらのプラットフォームの初〜中級問題でも頻出します。

次回・第2話

IDORで他人の情報を覗く|権限昇格チェーン

オブジェクト参照の番号を1段、2段と書き換えていくと、本来は見えないはずの情報に到達できてしまう「IDOR」という脆弱性を体験します。

📚 参考情報

  • 「はじめてのCTF」第7話・第10話(本話の前提知識)
  • OWASP Top 10(権限管理・認証関連の分類)

コメント