月曜日, 9月 22, 2025
月曜日, 9月 22, 2025
- Advertisment -
ホームニューステックニュースFull Weak Engineer CTF 2025を開催しました 〜運営の裏側〜

Full Weak Engineer CTF 2025を開催しました 〜運営の裏側〜


はいどうも、脆弱エンジニアのアスースン・オンラインです。
(…と言いつつ、この記事は運営メンバー一同で執筆しています!)

2025年8月29日(金) 〜 8月31日(日)に「Full Weak Engineer CTF 2025」を開催しました!

このCTFは、CTFチーム full_weak_engineer の有志のメンバー(うち半数が学生)で作問・運営をしていました。


問題:https://github.com/full-weak-engineer/FWE_CTF_2025_public/tree/main

過去にアスースンが開催していた ASUSN CTF (大喜利あり・ネタ寄りのCTF)とは打って変わって、真面目でちゃんとしたCTFらしいCTFだったかと思います。

チームのエース t-chen がリーダーとなって方針決定から実現までを引っ張ってくれて、全世界から733チーム に参加いただきました。たくさんのご参加ありがとうございました!

問題数は全部で50問(12時間ごとに3段階で解放)とボリューム多めで、難易度は初心者寄りのものから高難易度のものまでたくさん揃いました。

初開催にしては上出来(?)だった FWE CTF、その裏で何が起きていたのか——本記事ではその舞台裏をお届けします!

チームメンバーの t-chen が問題を作りたそうにしていました。

t-chen は ASUSN CTF 2 でも何問か作問していたのですが、その時の問題はそこそこの人に全完されてしまい、こんなので満足されていたら困る!と感じていたそうです(もっと周りの上級CTFプレイヤーを唸らせるような問題を作りたそうにしていた)

Flatt Security mini CTF で t-chen が「CTF開催してみたいんですよね〜」と st◯8 さんにカジュアルに話してみたところ、圧力を掛けられた 楽しみにしてくださったので、「やってみよう!」となったところから始まります。

https://x.com/st98_/status/1890022119523889211?s=46

アスースンが運営している「脆弱エンジニア」のDiscordサーバーでCTFプレイヤー向けに運営の募集をかけてみたところ、たくさんのメンバーが集まってくれました。

作問や運営を経験してみたい人は意外といるんだな!という印象でした。
問題を作って他の人に解いてもらうことはCTFのスキルアップに繋がるので、チームとしても嬉しい限りです。

運営チーム専用のDiscordを用意して、情報共有を行いました。
当日までは3回ほどミーティングを行い、作問の進捗報告や当日の役割分担などを話しました。

作問の様子

それぞれの問題は、Discordのフォーラムを使って全メンバーが思いつき次第アイデアを出しました。

問題ごとにアイデアを投稿していくスタイルで、他の人のアイデアに自由にコメントなどできるようになっていました。
おかげで、共同で作られた問題もいくつか誕生しました!

開催まで半年以上期間があったので、たくさん熟成されていました。

温めに温めていた最難関問題が、開催一週間前に他のCTFで出題された問題の非想定解法で解けてしまうことが発覚し、その対策を余儀なくさせられたりしました。

ちなみにサーバーが必要になる問題(Webサイトやncコマンドを要するタイプの問題)は、docker化する部分を t-chen がサポートしてくれるので、初心者でも安心だったと思います。

インフラ周りあれこれ

インフラは主に t-chen が対応しました。

こだわりポイントとしては、インスタンサーを導入しました。
Web問題はローカルで試してから挑めという強い思想を感じますね…!

詳しくは以下にまとめられているので、ぜひご覧ください!

https://zenn.dev/tchen/articles/16c36a3c842e84

なお、参加人数が多かったため、それなりのスペックのサーバーを使っていて、そこそこ費用がかかりました。
次回のFWE CTFの開催は未定ですが、この先スポンサー獲得なども視野に入れたいです。

CTFtimeへの登録

チームの意見として、海外の人たちにもプレイしてもらいたいということで、CTFtimeに登録しました。

CTFシリーズの登録とCTFの登録の2ステップある上に認証にかなり時間かかるので、登録されるまで時間がかかりました。

https://x.com/tepelchen501/status/1953429410616623327

ちなみに、2ヶ月前とかでも間に合わない可能性があるらしいです。

Wplaceでの告知

ピクセルのチャージのため3日くらいかかりました。

https://x.com/tepelchen501/status/1959382816279670980

(なお、現在は何者かにジャックされておりQRコードが動かない。脆弱だな〜!)

開催前の登録チーム数多いな?

CTFtimeに登録していたこともあったためか、ASUSN CTFの登録者数をはるかに上回るチーム数になっていました。


開始前日に登録チーム数が200チームを超えて驚いているメンバー


「脆弱エンジニア」Discordサーバーにて、やる気に溢れる参加者側のメンバーの発言

Production環境の破壊

登録開始後ですが、t-chen が誤ってProductionを爆破してしまいました。


脆弱だな〜

スコア減衰関数はこれでいいのか?

多くのCTFは、CTFdというプラットフォームを使って実現されています。
ASUSN CTF や FWE CTF でも CTFd でスコアサーバーを構築しています。

そこで毎回ちょっと迷うのが、スコア減衰のパラメータです。
解かれた数によってスコアが下がっていくやつです。

500点をスタートとして、解かれた数が多いにつれて徐々に下がっていき、下限の100点まで下がるというのが一般的だと思います。

Decayというパラメータが下限の点数まで下がるsolve数を表していて、Decay=200だとしたら、200チームに解かれたら100点になります。

デフォルトの数式だと上の図のようになるのですが、「上に凸は変なのでは?」という話になりました。

  • 10solve問題と20solve問題を解いた人
  • 5solve問題と25solve問題を解いた人

上に凸だと前者が評価され、下に凸だと後者が評価されます。
もはや線形でもいいのでは?という提案もあったけど、それは同点が多くなりそうということで、若干下に凸な配点いいんじゃないかとなりました。

実際、高難易度のCTFなどで、下に凸な減衰関数を採用されているケースがいくつかあったので、今回の難易度を鑑みて下に凸の関数を採用することにしました。

肝心のDecay(何solveで下限の点数とするか)の値についてですが、Beginner問題は下限の点数となるが、Easyはそれを超えないラインとして、300ちょっとと予想して設定しました。
(何チーム参加するか不明なので決めるのがマジでむずい)
(結果、Easyの「base🚀」が101点になるという絶妙なラインだった←すごい)

開始時と終了時はDiscordでボイスチャットを繋ぎながらワイワイ実況していたりしました。

開催中は大会のアナウンスをしたり、問い合わせの対応をしていました。
(海外プレイヤーのヒントください的な問い合わせが多くて大変だった…。対応したチケットは全部で130件以上にのぼる)

「SotaFuji」問題の不備

SotaFujiという問題に不備が見つかりました。


頼むよ

問題が解かれなくてハラハラする作問者


ドキドキ

まさかのFull Weak Engineer(非作問)メンバーが…!?

koufuくんが作製したRevのボス問「vvvmmm」がFull Weak Engineerの超新星(?)のコンボくんに解かれてしまいました。

しかも、最後まで 1 solveでした…すごすぎる!

【怖い話】CTF開催中に即興でインスタンサーを書いた話

大会中にトラブルで即興でインスタンサーを書いたt-chen

「プロキシサーバー」という少し変わった構成の問題だったので、利用したインスタンサーとの相性問題が発生しました。そこで、ChatGPTの手を借りながら独自インスタンサーを作製しました。テストしていないから脆弱性があるかもれない、いつクラッシュするかもわからない、というヒヤヒヤな状態が続きましたが、結局最後まで無事でした。事前にテスト、大事!

ハートブレイク

どうでもいい演出ですが、問題が解かれるにつれて、トップページやfaviconのハートが割れていました。

脆弱だな〜!

結局解かれなかった問題「Personal Website – secured」


(「仮眠とってただけだわ」というツッコミを期待していた)

アンケート

https://x.com/hamayanhamayan/status/1962120702422913392?s=46

アンケートでのCTF参加回数に「100回以上」という項目がありますが、これはボケではなく、割といい感じに分布しています。

(元々ASUSN CTF 2でha◯ayanha◯ayanさんやst◯8さん向けに面白半分で用意した項目であることは事実)

今回の開催を通して、運営メンバーみんなの今後のCTFの作問ライフをよりよくしていくために振り返りをしてもらいました。

良かった点

  • 開催日が早めに決まっていて良かった(3/18に公開)
  • みんなで意見を出し合いながら共同の問題が生まれた
  • プレッシャーがかかりすぎず、気軽に挑戦できた
  • みんなのモチベーションが高く、それを最後まで維持できた

反省点

  • 絶対に締切駆動開発になってしまう(永遠の課題)
  • 0solvesが1問、1solveが8問、2solvesが3問もあり、難易度をもう少し調整すべきだった
  • 配布ファイル名は問題ごとに変えて、zip展開したときに整理しやすくすべきだった

開催して良かったの声

  • 自分の作った問題を解いてもらう事の嬉しさを知れた
  • CTFdの管理画面を見たりいじったりできたのが楽しかった!
  • 海外の方々も多く参加してくれて、その運営をできたのはとても良い経験でした!

チーム「脆弱エンジニア(full_weak_engineer)」では、SECCON CTF決勝進出を目指してCTFに取り組んでいます。

CTFの情報を収集したい方や、チームでの参加に興味がある方は、YouTubeの概要欄にあるDiscordリンクから、お気軽にご参加ください!

https://www.youtube.com/@full-weak-engineer

運営メンバー

リーダー
t-chen

作問
Alphe, asusn, Atsushi2965, chama, colza, hatosable, JUCK, kariiho, r_k01m, ryhtbsh, siruma, t-chen, こーふ

インフラ
asusn, colza, t-chen

プレイテスト協力
Peter(r3kapig), oh_word(infobahn)

執筆
Alphe, asusn, t-chen



Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -