Introduction

CTF は Capture The Flag の略です

CTF を楽しむために

CTF って何の略だろう?って言うぐらいの初心者でも CTF を楽しめるようになるための指針です。

CTF初心者が考えるCTF入門 の記事も良くまとまっていると思うので是非読んでみてください。

実際に開催されている本当の大会に参加する

これは持論ですが、CTF 練習用のサイトで練習するのは個人的にあまりおすすめしません。練習用サイトで CTF してて本当に面白いですか?

練習用のサイトや問題をオススメしない理由

  • 実際に開かれている大会に参加して必死に1問を解いた方が絶対に効率的です

  • リアルな問題を解いた方が、問題に慣れるという意味で良いと思います

  • ラッキーパンチで問題が解けた時に、自分って凄いんじゃないか???って言う感じで、モチベーションが上がり、次も頑張れるようになります

  • チームで参加できるので、複数人で取り組むことができます

  • 全員が0ポイントからのスタートで、順位も出るため自分の成長がわかりやすいです

  • CTF の問題を解くために Google で何をどう調べたら良いかという能力が向上します

テストのための勉強をしっかりしてから、テストで良い点を取るやり方では、いつまでたっても問題は解けません。まずは参加してみましょう。

また、英語から逃げてはいけません。CTF の大会は基本的に全て英語です。問題文が読めない場合は Google 翻訳でも何でも使って、とりあえず参加してみましょう。

実際のところ CTF の大会はほとんど毎日のように開かれています。

CTF Time というサイトの Events calendar を見れば、各種大会の日程をカレンダー形式で確認することができます。直近に開催される大会については Upcoming を確認すると良いでしょう。CTFTIME に登録すればタイムゾーンを JST に変更することができるので、より使いやすくなります。

さらに CTFTIME の良いところは、各大会の writeup が集積されている点にあります。だいたい2~3日程度で、自分が参加した大会のユーザ解答がいくつか集まります。そのため、解けなかった問題を復習することができます。

大会参加の心得

全ての問題を解こうとしてはいけません。自分の興味のあるジャンルに絞って1~2問だけ解くようにしましょう。1〜2問程度であれば復習にもそれほど時間はかかりません。

また、全くわからない問題はすぐにあきらめましょう。後日、他の人の writeup を見ながら実際に手を動かしてフラグをゲットしてみてください。大会終了後も一定期間動いている大会が多いです。

大事なことは、大会が終わった後に着手した問題について深く理解し、自分で解けるようになるということです。他の参加者が書いてくれた writeup を読み、復習することで簡単な問題であれば解けるようになります。

CTF 参加 ~ 終了までの流れ

チーム名を決める

1人で参加する場合でもチームを作ることができます。

大会登録時に設定できる場合が多いので決めておきましょう。

参加する大会を決める

まずは参加することが大切だと思うので、自分の予定に会う大会を CTF Time で見つけましょう。

確認しておいた方が良い情報は Date , Location , Notes です。

Date : 大会の開催期間です。 (CTF Time に登録していて TimeZone を設定していない場合は、時差を考慮する必要があります)

Location: On-ine の大会を選びましょう。

Notes : 現時点での参加チーム数です。これは CTF Time に登録しているチームの参加予定数です。数が多ければ、終了後の writeup が期待できます。

大会に登録する

参加したい大会が決まったら、次は実際に参加登録を行います。

これは CTF Time では行えないため、実際に大会の公式URLにアクセスします。URL は CTF TIme に載っているので、そこから飛びます。

この例では Official URL: https://ctf.utsacyber.com/ にアクセスします。

基本的には良くあるWebサービス同様に登録するだけです。大会によって様々ですが、この初回登録時に参加チームを選ぶ場合もありますが、基本的には参加者の情報 (メールアドレスとパスワード) を登録するだけです。

ここで登録した内容でログインできるようになります。

また、ルールについて公開されている場合もありますので、目を通しておくと良いでしょう。

大会登録時の注意点・心得

  • 開催直前までサイトにアクセスできない場合がある

  • 参加登録の段階で CTF が始まっているんじゃないかと思うぐらい「参加手順」が良くわからない大会がある

  • 大会ルールやアナウンスが DiscordTelegram などの外部ツールで行われる場合がある

  • 大会ページが攻撃されている場合が結構ある

大会の参加に失敗してしまった場合は、気にせず他の大会に参加しましょう。

大会に参加する

絶対にやっておいた方が良いことは、以下の2点です。

  • ルールの確認

  • フラグ形式の確認 (普通はフラグ確認系の問題が用意されていますが、一応確認しておきます)

特にフラグ形式は問題 (特に Crypto) を解くためのヒントになる場合が多いため、最初に絶対抑えておきましょう。

フラグ形式について

良くあるフラグ形式は xxxx{yyyyyyyy} のような形です。

xxxx : 大会ごとの固有の文字列や flag , ctf などが多いです。

yyyy : 完全にランダムな文字列、ハッシュ値、英語の文章、英語の文章をちょっと変化させたものなど大会によって様々です。

英語の文章の場合、頑張れば推測できる場合もあります。

問題について

問題数と出題ジャンルは大会によって様々です。一応、開催期間が長い大会は問題数が多い傾向にあるように思います。

頑張って問題を解いていきましょう。

スコアと順位

問題の得点は変動制になっている場合が多いです。つまり、ベースの得点があり、さらに解いた人数に応じてその得点が減っていきます。

また、いつ解いても得点は同じです。最終的なスコアの合計で順位が決まります。

順位はチーム (登録していない場合は個人) でリアルタイムに確認することができるため、結構面白いです。

大会終了後

CTF で問題を解けるようになるためには、終了後の行動がかなり大事です。

できるだけ以下の作業を行いましょう。

  • 解けた問題について writeup を書く

    • 大会参加時の解き方、さらにはもっと効率的な解法等についての考察

  • 解けなかった問題の writeup を読む

    • 実際に writeup を見ながらフラグを取得してみましょう。

この2つを行うだけで、どんどん成長できます。

必要なスキル

ジャンルごとに必要なスキルは様々ですが、どのジャンルにも共通して必要となるスキルは Google 検索能力英語です。