この記事はアドベントカレンダー2025の8日目の記事です。
こんにちは。Ida-jiと申します。今回はCTFというサイバーセキュリティを扱った競技を始めてみた感想をブログって行きたいと思います。ブログを最後まで読めば分かりますが、CTFのネガキャンをしたいわけではないぞ!!!!!!!!!!!
CTFとは?
「CTFとは」でググったらAIがすごすごな概要を出してくれました。
"CTFとは、「Capture The Flag」の略で、情報セキュリティのスキルを競う競技(ハッキングコンテスト)です。参加者は、サイバー攻撃や暗号解読など、様々なセキュリティ関連の課題を解き、隠された「flag」と呼ばれる答えを見つけ出してポイントを競います。"
よくあるCTFでは、まず問題が出てきます。問題には、タイトルと問題文以外に添付ファイルみたいなのとかがついてくることが多く、コンテスト参加者はそのファイルとか画像とかプログラムコードとかを解析したりしてflagを見つけ出します。大体問題文からどこにflagがあるかを推測したりします。

traPでは2025年現在「CTF班」というものがあります。CTFのコンテストにtraPの部員たちが参加したりしています。言い忘れていましたが、CTFコンテストはチームごとの参加になっていることが多く、チームの人数は決まっていないところもあります(無限人参加可能)。
CTFを始めてみた
私は2025年の9月あたりにCTFを始めてみました。夏休みの前半はワンマンソン(1か月くらいかけてハッカソンをするイベント)に費やして、後半で新しい分野を始めてみようと思ってました。夏休み二カ月もあって良いですね。なぜCTFにしたかというと、か、カッコよさそうだったから...?
traPというサークルは非常に親切なので、新入生のためのCTF講習会とかが4~6月あたりに開かれます。CTFの中でも色々な分野に分かれていて、各分野ごとの講習会もあったりします。
traPというサークルは非常に非常に親切なので、それらの講習会の配信のアーカイブも残しているんですよね。おかげで講習会期間が終わっている9月でも講習会の配信を見ながらCTFを始められるというわけです。ありがとうありがとう。
とりあえず、まずCTFオリエンテーションというCTF全体の軽い説明会みたいなやつの配信を見てフムフムこんな感じなのかになってから、各分野の講習会の配信を見始めました。Pwn編とかは夏合宿中に見てました。
そうそう、言い忘れてましたが、CTFにおける代表的な分野たちを紹介しておきます。
Reversing...よくわからん実行ファイル(ELFとかjavaとかpythonとか?)が渡されるのでそれの解析をしたりする。プログラムの挙動が分かれば大体解ける。まあ往々にして分からないんですけど。
Pwn...Linuxとかで意図的にオーバーフローとかを起こしたりしてプログラムを"壊す"分野。壊すことでプログラムが想定外の挙動を起こし、本来出ないはずの出力結果が出たりするようになる(出たらflagゲットみたいな)。一番ハッキングっぽいやつ。かなーり難しい。
Crypto...古典暗号(シーザー暗号とか)から現代RSA暗号までを扱う暗号分野。絶対にpythonを書けた方がいい分野の一つでもある。ちなみに私は全然書けないのでAIに書いてもらいます。数学4割、復号プログラム実装で6割という感覚。
Forensics...Reversingと結構似ていますが、扱うファイルの種類が微妙に違う。Reversingは実行形式ファイルだけどForensicsは画像とか音声とかのファイルがあって、その中からflagを見つけ出します。あんまりヒントがないので気合と推測でやり通します。
Web...Webに関する問題が出ます。Webアプリの挙動を書き換えたりして制御を奪ったりします。まあ扱うものがファイルではなくWebアプリになっているというのが大きな違いですかね。俺はまだWeb系の知識がないのであんまり触ってません。
OSNIT...ネットの海を泳いで欲しい情報を手に入れる分野。GeoGuessrとかもやるし、GeoGuessrのネット版もやったりする。もはやInternetGuessr。調べたいものがちゃんと出てくるように検索をテクくするのが大事そう。
Misc...上記以外の分野。割とトリッキーなものもあるとかないとか(私はまだあんまり知らないです)。

俺はReversing、Crypto、Forensicsをメインでやってます。
CTF、ムズすぎる
ここでタイトル回収をします。
はい。CTFって難しいんです。
CTFでは多くのプログラミング言語が出てきます。それが具体的にどういったものなのかちゃんと解析します。解析したうえで、flagを手に入れるために何をするべきか考えます(ここが一番難しいと思ってる)。そして、flagを手に入れるために復号プログラムとかを書いたりします(ここも難しい)。
解析といっても、別に解析するファイルが一つとは限らなくて、3個も4個もあったりします。そもそもファイルにフィルターとかがかかっていて開けないとかもあります。復号プログラムを書くところとかも、競技プログラミングとかゲームのプログラミングコードとはまた違った難しさを要求されそうです。そもそも、プログラミングコードを読むことが出来なければ話が先に進みません。
私なりのCTFの楽しみ方
私はあんまりpythonが書けないし、プログラミング自体も大学で本格的に始めました。そんな私は、はっきり言って実力は今もほとんどありません(自称ガチ初心者です)。
でも私はCTFを楽しんでいます。実力を上げるのは一旦置いといて、セキュリティとかプログラムとかの知見を蓄えるためにやっているといっても過言ではないですね。
では、どうやって知見を蓄えているのか?ここから先が、私の真に言いたいことです!!
分からないことは全部AIに聞け!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
はい。私は、CTFで分からないことがあるたびにAIに聞いています。そりゃそうです、CTFの知識の部分をいちいちググるのはめんどくさいんです!!(カス)
あと、pythonの実装コードとかもAIが書いてくれます。私はあんまりpythonが書けない(2回目)ので、この状態で自力でコードを書こうとすると私が泣くことになります。

もちろん、AIの言葉を全て鵜吞みにしてただただコピペをするだけになってしまってはいけません。AIは膨大な知識の宝庫ですので、色んな質問について知識を返してくれます。その知識を覚えて自分のものにしようとする姿勢こそが重要だと思ってます。コードについても同様に、AIが出力してくれたコードをただ貼るのではなくて、そのコードがどんな挙動をしてくれるのかちょっとでも考えることが大事だと思います。なんなら「この復号コードはどんな挙動をするんですか?」とまたAIに聞き返してみるのも良いかもしれません。
AIを使ったからといって、CTFの楽しみが大きく半減するわけではないと私は思います(あくまで個人的な意見ですが)。確かに実力は上がりにくくなると思いますが、自力でやろうとして挫折するよりかはAIに色んなことを聞いてみるのが遥かにマシだとも思います。いずれは全部自力で出来るようにしたいね。
CTFコンテストとかは、なるべくAIを使わないようにしたいね!が、頑張る...
CTF人口、少なすぎませんか???
私みたいにCTFをほぼ100%エンジョイでやっている人は少ないと思います。多くの人は難しすぎてそのままやらなくなってしまうのかと思います...(だからこそAIをどんどん使うことを私はおススメしたいのですが。)
2025年の話でいうと、traPの部員の中でCTF班に所属している人は、前期で124人だったのが後期では69人に激減しています。ちょっと悲しいですね。traPの7つの班の中で最少人数にもなってしまいました。だいぶ悲しいですね。
だからこそ、私はもう一度言いたい。
AIを使ってCTFをもっとやりやすくしよう!!!!!
明日は@SAH123によるブログです!よろしくお願いします!!