ふるつき

v(*'='*)v かに

CakeCTF 2023 開催記

今年も初心者〜中級者向けのカジュアルCTF、 CakeCTF 2023を開催しました。運営メンツは変わらず、私、ptr-yudai、yoshikingの3人です。

今年は2023/9/2 - の予定でしたが、他の(出たい)CTFと時期がかぶっていたので(あと問題全然準備できてなかったので)延期して11/11 - 11/12になりました。しかしAVTOKYOと被ってしまったらしく、客を取り合う状態になってしまいました(実際にはAVTOKYOよりCakeCTFを優先するということはないと思うので奪われていただけだと思う)

毎年開催記に何を書くかについては悩んでいるのですが、今年も悩みつつやったことや思ったことを書いていきます。作った問題については参加者のwriteupがある程度出揃ってから書こうと思います。

CakeCTF 2023
1点以上獲得したチーム数 729
Welcome / Survey以外の問題も通したチーム数 357

問題の準備

CTFの開催で本当に一番クリティカルなのが問題セットの準備だと思います。他のCTFでも大変だという様子が開催記やtwitterでの様子から漏れ聞こえてくることがありますが*1、我々も例に漏れず大変な思いをしていました。

というのも、特に私がWebやReversingといった非専門ジャンルの難易度のインフレについていけず、これらのジャンルの問題の作問を担当できなくなってしまっているので、全てをptr-yudaiに任せてしまっています。したがって、ptr-yudaiが忙しくなると問題セットが完成しないということになってしまいます。

そして今年はタイミング悪くCakeCTF前後のptr-yudaiが忙しくなってしまい、webやreversingの問題は開催前日にぎりぎり完成する OR 当日も特に間に合っていないので理想の状態よりはちょっと問題が少なくなってしまうという状態になってしまいました。

これについては3人で運営を回している(そのうち2人はほとんどcrypto専門)という現状に無理があると思っています。来年以降もptr-yudaiに負担をかけ続けるのは本意ではないので、来年以降はwebやreversingの作問をしてくれる運営メンバーを増やせないかな〜と思っています*2。しかしこれで思い当たるようなメンバーにはCakeCTFを楽しんでもらいたいという思いもあり複雑……。

賞品の準備

CakeCTFでは上位の日本チームや良いwriteup*3に対して賞品を贈呈しています。これはもらったら嬉しいので上位陣のモチベーションになるということや、来年の開催もまた楽しみにしてもらいたいという思いがあってやっていることです*4

これの準備もptr-yudaiにやってもらっているのですが、先述の通り今年は忙しくしていて賞品についてはまだ準備ができていません。お待ちください!! 私も手伝えればよいのですが、このあたりのセンスが壊滅しておりまして……

スポンサー募集

CakeCTFではインフラ費用や賞品の作成・発送などの費用を賄うためにCTFの開催を支援してくれる個人スポンサーの方を募集しているのですが*5、今年も多くの方にご支援いただくことができました。

今年はTwitterの投稿にGoogle FormのURLを貼るという形式にしていて、昨年までの私のTwitterアカウントにDMを送ってスポンサーになるよりは楽に支援いただけるようになったんじゃないかなと思います。私としてもやりとりがちょっと減って楽になりました。

スポンサーしていただいた方には今後お礼の品などを送らせていただく予定ですが、このあたりの準備もptr-yudaiパワーを使うのでしばらくお待ちください。

インフラの準備

ここは毎年私が担当しているのですが、慣れが出てきたのか開催を経るごとにどんどん雑になったり準備が遅くなったりしていて大変です。

だいたいterraformを使ってGCP上にVMインスタンスを立てて、

  • スコアサーバにはsshログインしてkosenctfxという自作のスコアサーバをdocker compose up -d で立ち上げる
  • 問題サーバはansibleでパケットキャプチャとかを設定しつつ問題のファイルを転送してdocker compose up -dで問題を立ち上げる

ということをしているだけです。そして毎回GCPのquota制限のことを忘れていて緩和の申請をすることになる。ギリギリでサーバを立ち上げるとこの緩和申請がCTF開催に間に合わないのではないかとひやひやすることになります。素早く対応してもらえて助かりました

kosenctfxの更新

普通CTFを開くときはCTFdかrCTFというアプリケーションを使うことが多いと思いますが、CakeCTFでは私の自作のスコアサーバのkosenctfxというやつを使っています。

今年はzer0pts CTF 2023のときにNext.js 13に上げたのを忘れていてCakeCTF用のテーマのLink要素とかを直さないといけないのが大変でした。機能追加とかは特にしてないです

Google CTF Sponsorship

毎年ありがとうございます。https://goo.gle/ctfsponsorship のフォームにちょっとCTF情報を入力するだけでGCPで使える$500のクーポンが降ってくるので、サーバ代をケチらずに済んで助かっています。

開催中

今年の運営のミスを列挙。ミスしてない間は大体スプラトゥーン3をやっていました。以前はptr-yudaiやyoshikingとボイスチャットをつないでBoard Game Arenaで遊んだりしていたけどそういうのもなくなってしまった……。

  • CTF開催後1分くらいTasksが表示されない
    • これはNextJSのISRのrevalidateのインターバルのせいだと思っていて、今回は5secにしたので最悪でも5secで表示される……と思ったのですがなんか1分くらい表示されませんでしたね。なぜなのか……
  • Welcome問題がオープンになってない
    • ミスりました。すみません
  • unicompのポートが空いてない
    • すみません。オペミスです。ポートの設定もなんかスポナーとかで自動でいい感じになるようにしたい(夢)
  • vtable4bのフラグの設定が間違っている
    • すみません。こういうのチェックするのもちゃんとやっていきたい。一時期GitHub Actionsでやったりしていたけど、「問題を解いたときに出てくるフラグが設定と一致していることを確認する」ようにするとGitHubActions上で問題を解くスクリプトを回す必要が出てきて大変なんですよね……
  • Memorial Cabbageの問題設定が間違っている
    • すみません。同上です
  • SurveyのGoogle Formで回答後に表示されるフラグが去年のもののままだった
    • すみません

ケアレスミスが多くて、ちゃんとしてないということがわかりますね。舐めた態度をやめていきたい

開催後

みなさまのwriteupを読んだり、Survey結果を眺めたりしています*6。CTF開催は結構重たい作業で年に1回とか2回とかしかできないので、ここでのフィードバックがめちゃめちゃ重要になってきます。気になったことや良かった(継続してほしい)ことはどんどんSurveyに書いてください。あとモチベーションの維持のために感想も書いてほしいです。色々要求してすみません

ちなみにSurveyはたくさん書いてあったり、記名で回答してあると真面目に検討する率が上がります。ことしは昨年のフィードバックを参考に問題を開いたときのダイアログの位置を修正したりしました。

今年のSurveyへのお返事

Surveyが増えたら増えるかも。Surveyで頂いたご意見は適宜意訳してます

  • A team account system like what rCTF does might be better than having to share a password maybe
    • これは確かにと思ったので検討します
  • 去年は1問も解けず、今年は1問だけ解けた。もう少し簡単にしてもよいのでは?
    • これ以上簡単にすると、経験者にとっては退屈なだけな問題になってしまいそうなので難しいなと思っています。簡単ではあるんだけど、経験者でも一瞬頭をひねらないと解けないような問題を作りたいので(=ひと目で解ける、典型をやるだけみたいな問題にはできるだけしたくないので)。一年の期間があるので他のCTFやBeginnersに参加して腕を磨かれると良いと思います
  • AVTokyoと被ってあまり参加できず残念でした
    • すみません。AVTOKYOも一言言ってくれたらいいのにと思っています。次回以降はCTFだけじゃなくて他のイベントとの衝突も気にしていこうと思います
  • Perhaps CakeCTF could have some weight on CTFtime!
    • レーティングをつけるには簡単すぎるCTFだと思っています。casualくらいが運営の気持ちとしてもちょうどよいです

その他クオリティが高い・問題が一見非自明なのに解けて気持ちよかったなども書いていただいてありがとうございます。はげみになります

ケーキの画像 from Timeline

ありがたいことです。私はケーキ食べてません(ケーキ屋に行くのが面倒だったので……)

おわりに

ではまた、zer0pts CTF 2024……はないような気がするので、あればCakeCTF 2024でお会いしましょう

*1:このあたりの話もっといろいろな人が書いてくれると嬉しいと思っている

*2:という話は特に誰とも合意をとったりはしていませんが、もし興味がある方がいらっしゃいましたらご連絡ください

*3:解いた問題やCTF自体の解説・感想などのこと

*4:私はそう思っている。他の運営メンバーがどう思っているかは知りません

*5:そしてここでめちゃめちゃ社会パワーを使うので私はやりたくなくなってきているのですが

*6:こう書くと暇そうに見えるけど、上位チームへの賞品の連絡やスポンサーへのお礼の連絡、スコアサーバの静的化などがこのあと発生します。CTFtimeへの結果の提出はもうやった