この記事は「MMA Advent Calendar 2025 - Adventar」の10日目の記事です。
この記事には、Daily AlpacaHackの12/4の問題「Leaked Flag Checker」のWriteupの一部が含まれます。
はじめに
こんにちは。電気通信大学MMAの今年度の部長を務めております、ka.kiiです。
アドカレを契機に初めて記事を書いてみました。拙い部分もあるかと思いますが、お手柔らかにお願いします。
さて、この記事では、「Daily AlpacaHack」について語ります。初心者が門戸を叩くのはやや難しいとされるCTFにおいて、比較的取り組みやすいと感じています。
私自身、MMAに入部したてほやほやの頃に、先輩たちの勢いに乗ってSECCON Beginnersに参加したものの、2日間かけて何もできずに惨敗した苦い経験があります。 Beginnersってあるから本当に何も触ってない人でもできるのかと思ってました
そんな私でも、Daily AlpacaHackは初心者でもいい勉強になるな〜と感じながら取り組んでいます!
そもそもCTFとはなんぞや
CTFの意味がわかる方は読み飛ばしてください。
CTF(Capture The Flag)は、NRIセキュアのセキュリティの用語解説では以下のように説明されています。
CTF(Capture The Flag)とは、情報セキュリティの分野では、専門知識や技術を駆使して隠されているFlag(答え)を見つけ出し、時間内に獲得した合計点数を競うハッキングコンテストを指します。クイズ形式の問題を解くほか、ネットワーク内で疑似的な攻防戦も行ったりすることもあります。
CTF形式のイベントで有名なものとしては、アメリカのDEFCONが規模・レベルともに世界最高峰とされています。また、国内では日本ネットワークセキュリティ協会主催のSECCONが国内最大級のイベントとして毎年開催されています。
要するに セキュリティに関するいろんな知識とか技術を駆使して問題解こうぜ! というものです。もっと難易度の高い大会では実際に攻防戦が行われるようですね。
SECCONなどが有名どころとして挙げられますが、国内・国外問わず様々なコミュニティでCTFが主催されています。過去にはMMAもMMACTFとして主催したことがあります。
常設型CTF
上に書かれたDEFCONやSECCONはいずれもコンテストとして開催される、イベント型のCTFです。制限時間内に問題を解き、高い順位を目指して競います。
一方、常設型CTFというものもあります。いつでも自分のペースに合わせて取り組むことができ、初心者向けの難易度設定がされているものが多いです。有名なもので言うと、picoCTFやCpawCTFがあります。
なぜCTFは初心者にとって難しいのか
私が感じたことをいろいろ書いてみました。
- 必要な知識が多い
- コードを読む力、Docker、Web系、暗号、etc.
- 必要なツールが多い
- Ghidra、CyberChef、Pwntools
- 常設型CTFをやりきるのも大変
そもそもこれプログラミングに初めて触れたくらいの人がやることじゃなくね?と感じる
そんなあなたにDaily AlpacaHack
というわけで本題です。
Daily AlpacaHackは、2025年12月1日から始まった、1日に1問ずつ出題される初心者向けの常設型CTFです。
上のリンクをクリックすると次のような画面になります。
「初心者に楽しんでもらえるようなシンプルな問題・教育的問題を毎日1問出題 」
とあるので、本当に初心者でも楽しめそうです。実際に私が執筆時点で公開されていた9問に取り組み、確かに初心者でも楽しめるな〜と思ったポイントを語っていこうと思います。
1日1問出題される
これまでの常設型CTFとは大きく異なる点です。私がCTFに初めて触れたとき、あまりにもジャンルが広すぎてどれから手をつければいいのかわからない...と挫折してしまったことがあります。CTFのジャンルに興味がある方はこちらの記事が参考になります。
AlpacaHackでは、とりあえず今日出題された問題に取り組んでみよう!という形で取り組むことができます。また、1問あたりの負担もそれほど多くなく、内容もシンプルです。
そのため、1日のスキマ時間に取り組むことができ、毎日継続してCTFに触れるということもできます。
ヒントや誘導が多い
「初心者に楽しんでもらえるようなシンプルな問題・教育的問題を毎日1問出題 」と書いてあるように、問題を解いていると「解くために気づかないといけない点」に気づきやすくなっているなと感じます。
例えば、12/4の問題の画面はこのようになっています。
初心者向けヒントということで、「Reversingのジャンルの問題はこういうもので、こういう形で解くのがセオリーだよ」という説明をしてくれています。
では、問題を少し見てみましょう。leaked-flag-checker.tar.gzには、バイナリchallengeとそのソースコードchallenge.cが含まれています。
// gcc -o challenge challenge.c
#include <stdio.h>
#include <string.h>
int main(void) {
char input[32];
const char xor_flag[] = "REDACTED";
size_t flag_len = strlen(xor_flag);
printf("Enter flag: ");
fflush(stdout);
scanf("%31s", input);
if(strlen(input) != flag_len) {
printf("Wrong length\n");
return 1;
}
for(size_t i = 0; i < flag_len; i++) {
if((input[i] ^ 7) != xor_flag[i]) {
printf("Wrong at index %zu\n", i);
return 1;
}
}
printf("Correct\n");
return 0;
}
xor_flag[]が"REDACTED"で隠されていますが、名前からXORされているんだなと推測できます。さらにプログラムを読んでみると、(input[i] ^ 7) != xor_flag[i]のような比較が行われていることが分かります。本当にXORが行われていますね。ここでは、ユーザーの入力を7でXORしたものとflagの文字を比較しています。
ということは、REDACTEDの値がわかれば、それを7でXORすれば復号できることが分かります(これは $A \oplus B = C$ ならば、 $C \oplus B = A$ であるという性質に基づきます)。
このようにして解き方を考えていけるようになっているわけです。続きの解き方が気になる方は公式のWriteup(解き方の解説)を読んでみてください。
AIを使ってOK
「友人やAIと話し合いながら解いてもOKです」とされてます。いくら誘導があるとはいえ、それをきちんと解釈できる人は果たして初心者と言えるのでしょうか。
AIに「ここまではわかったんだけどヒント欲しい」「こういう解き方を思いついたけど合ってる?」「解き方何もわからないから丁寧に解説してほしい」などと、自分の理解度に合わせた質問を投げて勉強することができます。
CTFには競技時間が終わったら公開されるWriteupというものがあります。公式から公開されることもありますし、参加者が記事を書いてWriteupとして公開することもありますが、いやそれってどうやって思いつくんだとか、**知らないことを常識のように省力しないで...**などと、CTFの慣例を知らない私たちには読むのが苦しいものも少なくありません。勉強してないのが悪いとか言わないで...
Writeupから学べることも多く、今後より難しい問題を解いていくには、先人たちの解き方や考え方は大いに参考になります。しかし、まずCTFの世界を理解していくには、自分のペースで理解を進められるAIによる勉強が合っているという方も多いのではないでしょうか。
24時間後のWriteup公開
そのWriteupですが、AlpacaHackでは1日に1問新しい問題が出題され、そのタイミングで前日の問題のWriteupの投稿が許可されます。
この24時間というタイミングが絶妙に良いと思っています。「答えが出るまでとりあえず粘ってみよう」と取り組むことも、「いろいろ考えたけどわからないから明日まで待とう」とすることもできます。
もう一点、常設型ながらWriteupが出ない時間が設定されているということですので、コンテストさながらの緊張感のようなものを味わえるということもできます。コンテストの問題は太刀打ちできないと感じている私にとって、これは結構嬉しいものです。
ちなみに、問題の画面にWriteupのタブがあります。画面の下側にwriteupsがあるとわかると思います。ここをクリックします。
するとこのような画面になり、Writeupの記事を見ることができます。
おわりに
Daily AlpacaHack、楽しいです。
CTFをやりたいとずっと思っていたものの、SECCON Beginnersなどのコンテストで問題を解けるまで成長するのは先が長いと感じていたので、このように適度な難易度で毎日取り組めるコンテンツがあるのは本当にありがたいです。
今はまだAIに質問しながら解いていくことがほとんどですが、自力で解ける問題を増やしていけるよう、頑張っていこうと思います。
明日はwillさんの記事になります!
参考文献
https://alpacahack.com/daily
https://www.nri-secure.co.jp/glossary/ctf
https://blog.shinonome.io/ctfchu-xin-zhe/






