採用はこちら!

Shinonome Tech Blog

株式会社Shinonomeの技術ブログ
4 min read

CTF初心者によるCTFの紹介

CTF初心者がCTFの楽しいところを紹介します!

こんにちは!「PlayGround Advent Calender 2024」20日担当のmiyuです。

PlayGroundではモバイルコースに所属しています。

今年は大学でセキュリティ系の研究室に配属されてからというもの、CTFに参加する機会が多かった年でした。CTFもセキュリティもほとんど学んだことがない初心者でしたが、謎解きが好きなこともあり、徐々にCTFにはまりつつあります。

それなのでこの記事では、CTF初心者によるCTFの楽しいところを紹介したいと思います。「CTFってどういういうものなの?」という方にぜひ読んでいただきたいです。説明が拙い箇所も多々あるかと思いますが、ご了承ください。CTFを始めてみようというきっかけになってもらえたら嬉しいです。

最後に作成したお試し問題があるのでよかったら解いてみてください。

CTFとは


CTF(Capture The Flag)とは、情報セキュリティに関する問題を解き、flagと呼ばれる鍵を探し出すゲームです。情報セキュリティの知識をゲームを楽しみながら学べる競技として人気が高いです。

CTFの問題分野


CTFの問題の分野をいくつか紹介します。大会などによってジャンルの分け方が少し異なっていたりするので、ここで紹介する分野が全てではありません。

  • Crypto
    • 暗号を解読する問題
  • Reversing
    • バイナリ解析の問題
  • Web
    • Webアプリケーションの脆弱性を利用した問題
  • Steganography
    • 画像や音声を含めファイルからデータを抜き出すような問題
  • Osint
    • 一般に公開されている情報から分析する問題
  • Pwn
    • プログラムの脆弱性を利用してサーバーに侵入するような問題
  • Misc
    • その他の問題

このようにCTFではとても幅広い分野の問題が出題されます。「これら全ての知識が必要なの?」と思うと、CTFを始めるハードルが高いように感じるかもしれません。ですが、自分の得意ジャンルに合わせて特定の分野の問題だけでもCTFは十分楽しむことができます。

CTFの大会は制限時間内のあるチーム戦が多いため、問題を解く役割分担が重要になります。それなので、どれか一つの分野が得意という方も大活躍することができます。

好きな分野


CTFの中でも、Crypto、Steganography、Osintの分野の問題が好きです。私はWeb系の事前知識がほとんどなかったので、WebやReversingの問題は、簡単な難易度の問題にも歯が立ちませんでした。ですが、この3つの分野の問題はWebやコンピュータの事前知識をそこまで必要としないため、私にも取り掛かりやすかったです。

Crypto

主に暗号を復号するプログラムを書いて問題を解きます。まずどのような暗号化が施されているかを読み取り、その暗号について情報を検索し、暗号化された文字を解読するためのプログラムを書きます。(プログラムの作成はよくChatGPTに頼ったりします)

アルファベットをずらして解くシーザー暗号、素因数分解で解読するRSA暗号など、名前は聞いたことあるなぁという印象でしたが、実際に自分で解読できた時にはとても嬉しかったです。数学やパズルが好きな方は、きっとCrypto問題も面白いと思うはずです。

Steganography

与えられた画像や音声を解析します。例えば、画像ファイルに隠された他のファイルを見つけたり、音声ファイルに録音されている音の波形からヒントを見つけたりします。ツールを駆使して隠された要素を見つけていくのが面白くて好きです。一番宝探しのようなジャンルだと思っています。

Osint

とにかくネットから情報を収集して問題を解くヒントを探します。与えれた写真からそれが撮影された位置を特定するような、まさにGeoGuessrのような問題もあります。問題を解く上で事前知識を必要とせず、検索能力が勝負の鍵となるので、CTFが初めての方でも楽しいと思います。

CTFをやってみよう


CTFを始めてみようかなと思ったら、常設のCTFがあるのでぜひ取り組んでみましょう。

  • picoCTF
    • こちらはサイトは英語なのですが、有名なCTFなので日本語で書かれたwriteupと呼ばれる問題の解き方の記事がたくさんヒットします。
  • CpawCTF
    • 日本語の常設CTFです。

また、CTFの大会も様々な団体が開催しており、中には初心者向けの大会もあるので、ぜひチェックしてみてください。

お試し問題

最後にCTFのような問題を作成したので、よかったら解いてみてください。

(問題のクオリティについてはご容赦ください。)

※答えの形式は、通常のCTFのようなflag{xxx}という形式ではなく、ただの文字列です。

Q1 

ジャンル:Crypto

コピペ用:Qvfwghaog
ヒント

シーザー暗号

答え

「Christmas」

これはシーザー暗号です。サンタクロースがやってくる12月、key=12に設定して復号します。
メリークリスマス!🎅

Q2

ジャンル:Osint

ヒント

まずは画像検索!

答え

「小千谷市役所」

検索すると小千谷市役所に設置されたコイキングのポケふたであることがわかります。

Q3

ジャンル:Crypto

コピペ用:🐿👘👧👧👰👅👜👮👐👜👘👩🐘
ヒント

Base100

答え

「HapyNewYear!」

Base100で変換された暗号でした。こちらのツールなどを使うと復号できます。
https://www.dcode.fr/base100-emoji-encoding

Base100は最近知って、絵文字に変換するのがかわいかったので出題したくなりました。

おわりに


私自身CTFを通してセキュリティに興味を持つようになりました。CTFで知った知識がそのままセキュリティ関連の学びに繋がったりすることもあり、CTFを始めてみてよかったと思う場面が多いです。まだまだ初心者なので、これからもCTFを楽しみながら頑張りたいです。

CTFは意外と気軽に始められるよということをお伝えできていてたら嬉しいです。

最後まで読んでいただきありがとうございました!

明日はHiroさんの記事です!お楽しみに!