今回はCapture The Flagと呼ばれる競技について
1年ほど挑戦してみた上での所感等も交えて紹介してみようと思います。

Capture The Flagとは


Capture The Flag(略してCTF)とは主にセキュリティに関する
専門知識や技術を駆使して与えられた問題から
フラグと呼ばれる文字列を見つけ出す競技です。

まさにITに関する技術や知識を絡めた謎解きといった感じで
フラグを探す過程で様々なツールを使ったり、調査を行う必要があるので
問題解決能力を鍛えることができます。
また最後にフラグを見つけられた時には
大きな達成感を得られること間違いなしです!

問題について

問題はいくつかのジャンルに分かれていて
それぞれでフラグの探し方が大きく異なります。
この辺りはCTFごとに若干内容が異なるのですが
メジャーなもののみ紹介します。

  • 「Reversing」…問題としてプログラム(実行ファイル)が渡されるので
    逆アセンブラやデバッガを用いて解析を行うことでフラグを取得する。
  • 「Crypto」…暗号技術(RSA,MD5など)に関する知識を使ってフラグを取得する。数学が得意な人向き。
  • 「Web」…webアプリケーションに関するセキュリティ知識(SQLi,XSSなど)を使ってフラグを取得する。
  • 「Pwn」…実行中のプログラムの脆弱性をつくことでフラグを取得する。
  • 「Misc」…上記のジャンルに該当しない問題。

試しにやってみよう

言葉だけでは伝わりづらいと思うので、
試しに問題を解いてみましょう。

今回はpicoCTFと呼ばれるサービスを使用します。
こちらアカウント登録を実施すれば無料で利用することができます。
https://picoctf.org/

今回はWebジャンルの「WebDecode」という問題に挑戦してみます。
問題の画面はこんな感じ。
(CTFごとに画面の形式は異なりますが大まかな内容は変わりません)

①問題名
②問題の難易度とジャンル
③問題の概要(英語で書かれることが多い)
④問題のサービスを立ち上げるためのボタン
 (後述する常設型のCTFではあらかじめこちらから
 サービスを起動する必要がある)
⑤フラグの提出フォーム
 (フラグが手に入ったらここで入力して正解かどうかの判定を行う)

④のボタンからサービスを立ち上げるとリンクが現れるので
こちらから問題のページへ移動しましょう。

このwebサイトの中からフラグを見つけることが目的となります。

なんか外国の人が応援してくれてますね笑
CTFで出てくるwebサイトはユーモアに富んだものや凝ったものも
多いので視覚的にも楽しむことができます。

右上のリンクから別のページに飛べるみたいなので移動してみましょう。

「CONTACT」のページを見ると
「ページを探し続けろ、諦めるな」という旨のメッセージが書いてあります。

「ABOUT」のページを見ると
「このページを調べてみろ、何か見つかるかもしれない」と
書いてあるので詳しく見てみましょう。

ページのソースを見るためにF12キーで開発者ツールを開きます。
するとソース中のsectionタグのnotify_true属性に怪しげな文字列が書いてあることが分かります。

どうもエンコードされた文字列に見えるので
試しにbase64デコードを実施してみます。

するとこんな感じでフラグと呼ばれる文字列が出てきました。
(文字列のフォーマットについてはCTFごとにあらかじめ決められています)
あとはこの文字列を先ほどのフォームに入力することで正解となります。

今回は簡単な問題を紹介してみましたが、
webジャンルの問題はwebサイトに存在する脆弱性を利用することで
フラグを取得できるようになっていて、
SQLインジェクションやXSS等の攻撃を仕掛けることで
フラグを取得することができます。
問題を解く過程でwebセキュリティに関する幅広い知識を身につけることができます。

CTFに挑戦してみたい人へ

CTFには問題があらかじめ用意されていて
いつでも解くことができる常設型のCTFと呼ばれるものと
決められた時間の中でフラグの獲得数を競うイベント型のCTFがあります。

イベント型のCTFはいきなり挑戦するのは結構ハードルが高いので
最初は常設型のCTFで問題を解いて、慣れた上で挑戦してみるのがおすすめです。

以下で各CTFの一部について簡単にまとめてみました。
(難易度については個人的な所感になります)

常設型CTF

⚫︎picoCTF
https://picoctf.org/
先ほども紹介したCTFで
初心者でも気軽に挑戦できる問題が多く
CTFを触ってみたいという方におすすめです。

料金:無料
難易度:★☆☆☆☆〜★★★☆☆ 入門者〜中級者向け
その他:アカウント登録が必要/たまにイベント形式でのCTFも開催される

⚫︎Hack The Box
https://www.hackthebox.com/
「Challenges」という項目でCTFに挑戦することができます。
他のCTFと比べてユーザー間のコミュニティが充実している点や
問題、解説が丁寧に作成されている点が特徴です。

料金:基本無料(有料プランで解ける問題数が増える)
難易度:★★☆☆☆〜★★★★★ 初心者〜上級者向け
その他:アカウント登録が必要/たまにイベント形式でのCTFも開催される

⚫︎AlpacaHack
https://alpacahack.com/
日本の方が今年作成されたCTFで
現在月1ぐらいのペースでイベントも開催されています。

料金:無料
難易度感:★★☆☆☆〜★★★★☆ 初心者〜上級者向け
その他:アカウント登録が必要/たまにイベント形式でのCTFも開催される

イベント型CTF

⚫︎SECCON Beginners CTF
日本では著名なCTFイベントの1つで
難易度が易しい問題が多いので
最初に挑戦するイベント型CTFとしておすすめです。
開催は毎年6月ごろ。

難易度感:★☆☆☆☆〜★★★☆☆ 入門者〜中級者向け

ちなみに中級者以上をターゲットとした通常のSECCON CTFもあり
こちらは難易度高めになってます。

⚫︎Google CTF
Googleが毎年6月ごろに開催しているCTFイベントです。
難易度は結構高め。
デザインがとても凝っていて個人的に好みのイベントです。

難易度感:★★★☆☆〜★★★★★ 中級者〜上級者向け

この他にも多くのイベント型CTFが開催されているのですが
スケジュール等の詳しい情報が知りたい人は以下のサイトにまとめられているので
こちらを見ると良いかと思います。
https://ctftime.org/

まとめ

今回はCaptureTheFlagと呼ばれる競技について紹介してみました。
楽しみつつ学びを得ることができるので
もし興味のある方は挑戦してみてください!