feature image

2025年11月18日 | ブログ記事

traPavilion CTFコンテスト開催記

こんにちは、25Bのくあらんてぃんです。10/13に開催されたtraPの10周年イベント「traPavilion」において、CTF班展示としてCTFコンテストを開催しました。本記事は、その舞台裏の紹介と公式Writeupを兼ねた開催記としてお届けします。

traPavilionのイベント全体に関しては、公式サイトなどもご覧ください。

CTFについて知りたい方は以下の記事などを読むといいでしょう。

CTFを始めよう【新歓ブログリレー2020 5日目】
この記事は、新歓ブログリレー2020 [/tag/welcome-relay-2020/] の5日目、3月13日の担当記事です。 15B / 19M の @nari です。この記事では、Capture The Flag という競技を知らない人に向けて紹介したいと思います。 Capture The Flag とはCapture The Flag、縮めて CTF とは、サイバーセキュリティに関する競技の一つです。 サイバーセキュリティとはサイバーなセキュリティなことで、つまり インターネットやパソコンにまつわる様々な事物に伴う危険因子を未然に防いだりする分野 のことです。最も身近に感じることが出来る例としては、定期的に注意喚起がなされるパスワードの使い回しだとか、今見てるウェブサイトのアドレスバーに表示されてたりする鍵マーク(HTTPS)だとか、パソコンに入れるよう言われているアンチウイルスソフトだとか、そういうことを取り扱っているのがサイバーセキュリティです。 繰り返しになりますが CTFはこのサイバーセキュリティに関する競技で、目的としてはセキュリティ意識の向上や、セ
CTF をやってみよう!
新歓ブログリレー10日目の記事です。 こんにちは、CTF班所属のあんこです。この記事では、CTFの問題をどうやって解くのか、実際に解いていく過程を見ながらCTFの楽しさを味わってもらいたいなと思います。 CTFとは何なのかについては以下の記事を読むと良いでしょう。 https://trap.jp/post/976/ CTF について知らない人が多いと思うので最初の紹介ではこの記事を引用します。 Capture The Flag とはCapture The Flag、縮めて CTF とは、サイバーセキュリティに関する競技の一つです。 サイバーセキュリティとはサイバーなセキュリティなことで、つまり インターネットやパソコンにまつわる様々な事物に伴う危険因子を未然に防いだりする分野のことです。最も身近に感じることが出来る例としては、定期的に注意喚起がなされるパスワードの使い回しだとか、今見てるウェブサイトのアドレスバーに表示されてたりする鍵マーク(HTTPS)だとか、パソコンに入れるよう言われているアンチウイルスソフトだとか、そういうことを取り扱っているのがサイバーセキュリ

きっかけ

7月上旬のミーティングから準備が始まりました。企画の出発点は「CTF班もtraPavilionで何かでかいことをやりたい」というモチベーションでした。特に、オフラインイベントならではの問題で、より多くの人にCTFを楽しんでもらいたいという目標の下、準備が進んでいきました。

初回ミーティングの議事録の一部「主展示(CTF完全初心者向けのコンテストっぽい何か)- CTFやったことない人がメインターゲット - デカい会場ならでは / 物理ならでは - competitive」と書かれている
ちょっと特殊なコンテストをやりたいような温度感

参加者の解いた問題の管理にはスタンプラリー方式を採用しました。これはオフラインイベントで参加者がスマホとにらめっこする状況をできるだけ減らしたいという理由から来ています。Capture The Flagということで、解けたら小さな旗などの物理トークンを渡すという案もありましたが、実現性の観点からスタンプに落ち着きました。

作問

作問はGitHubのissue機能とDiscordを併用して行いました。9月に入って原案を各担当に振り分けてからは個人での作問作業が中心でした。9月は夏休み期間であり、忙しいメンバーも多かったため、なかなか進捗が生まれませんでした。この時点でもう少し積極的に作問状況の確認を行ってもよかったと思います。

一部の問題が間に合わなそうだったため、直前になって@n3@howard127@Suimaをメンバーとして招き入れ、無事5問出揃わせることができました。特に@Suimaに関しては1日で原案作成から問題完成まで行ってくれて、とてもありがたかったです。ぎりぎりで助けを求めるのではなく、人手が足りないと感じた時点で早めに人を探すことが大切だと痛感しました。

結果的に作問部分に関してはほぼ25Bのみで完結させることができ、とてもよかったと思います。

これらの作問作業と同時並行で、景品やスタンプなどの手配も行いました。発注やデータ作成に関しては@sohokro先輩にとても尽力していただきました。予算を見積もると想定を大幅に超えてしまい、途中からは削れる部分をとにかく削る緊縮財政のようになっていました。

当日

当日はメインホール後方のスペースを使って展示を行いました。問題材料の一部は現地調達ということで、イベント開始ぎりぎりまで問題の準備をしている人もいました。

開会してからは、人の出入りが比較的多い場所ということもあり、多くの方々に参加していただくことができました。どの問題も複数人の正解者が出て、全問正解者もいる一方、2問以上正解した方への景品は想定よりも余ってしまいました。長く時間がかけられないリアルイベントに求められる難易度の難しさを実感しました。

公式WriteUp

traPavilionで実際に出題された問題やその解法、作問の意図などを各問題担当者から紹介します。

Target X

(担当者: yasako)

問題文は次の画像のとおりです。文面は前日の夜に確定していたのですが、実際に参加者に見せた次の画像は、当日の朝急いでFigmaで作りました

構想自体は結構初期からあった問題なのですが、実際に誰を探すのか決まったのは前日の夜〜当日の朝にかけてでした。発見すべき「X」は、@quarantineeeeeeeeee でした。本当は運営でない人から協力者を探そうとしたんですが、間に合わなかった....

ちなみに、使用した駅の写真は、実際に当日の朝 @quarantineeeeeeeeee に撮ってもらったものです。想定解法は

  1. 提示された写真から駅を特定
    これはほとんどの人がクリアしていた印象です
  2. Xでハッシュタグを探すことを考える
    探す対象をアルファベットで表現したのは実はこれに気付いてもらうためでした。意味はあったんでしょうか?
  3. #traPavilion とXに投稿している人を順番に見ていく
  4. ハッシュタグを含む投稿の一件前に、科学大湯島キャンパスの写真を投稿している人が見つかる
  5. 湯島キャンパスは写真の駅のそばであること、またそのアカウントはtraPavilion当日に上の写真の駅について言及していることから、このアカウントがXのものであるとわかる。
  6. その人の過去の投稿を探すと、CPCTFで3位になったという投稿が出てる
  7. 次の記事を見つける https://trap.jp/post/2585/
  8. くあらんてぃんを会場で探す
  9. くあらんてぃんは、ルービックキューブのキーホルダーを身に着けていました。これを解答すれば正解です。

QapRicious Code

問題文は次の画像の通りです。

碁石だと大きすぎたため、当日は石をトランジスタで代用しました

filter, mosaic sheetという2つの小問を用意しました。mosaic sheetに関しては元データも載せておくので暇だったら重ねてみてください。

(担当者: quarantineeeeeeeeee)

以前何かで見かけたQRコードの脆弱性というものを題材に、CTFのセキュリティの部分の面白さに焦点を当てた問題を作りたいと思い、作問しました。小問ではシートを重ねることで文字が浮かび上がるVisual Cryptography問と赤セルシートを通してみることでQRコードが浮かび上がる広義Steganography問を作問しました。どちらも脆弱性を突くというよりは閃きとギミックを楽しむ謎解き問のようになりました。

filterの右側の文章は "Of course, It is not Piet!" と書いたつもりです。Piet という難解言語っぽいなーと思ったのですが、誰も気付いてくれなかった気がします。

mosaic sheet は重ねると以下のようになります。

2枚のモザイクシートを重ねると y=21 が浮かび上がる様子
我ながらいい感じ。

ちなみに、この問題のために https://trapavillon.trap.show/ を取りました。(公式サイトじゃないよ!!) 詐欺サイトのようなことをしてごめんなさい。

以下クリア時に遷移するサイトからのコピペです。

縦のカギ - mosaic sheet
シートを重ねることで隠された情報が出現する暗号でした。
このような暗号を「Visual Cryptography」などと呼ぶらしいです。

横のカギ - filter
赤セルシートを使うことでカラフルな模様からQRコードを浮かび上がらせることができます。
おそらく広義でForensics (ファイルなどに隠された情報を探し出すジャンル) の問題でした。

最終問題 - QapRicious Code
QRコードにはデータ領域とは別に、誤り訂正領域があります。この誤り訂正領域の半分程度であれば、読み取ったデータが誤っていても正しい情報を復元できるのです。
今回のQRコードは、普通には作成できないような特殊な構造になっています。正規リンクと隠しリンク、それぞれの誤り訂正符号を大体半分ずつ組み合わせて作成されているのです。
雑な説明をすると、特定のモジュールを白から黒にすることで、正規リンクの誤り訂正符号の量を隠しリンクの誤り訂正符号の量が上回るため、隠しリンクへと遷移させることが可能になるのです。

この手法を悪用すると、低確率で悪意のあるサイトへ遷移するQRコードを生成することも可能です。

信頼できないQRコードを読み取るときは、その遷移先をよく確認することが重要でしょう。

参考:瀧田 愼, 大熊 浩也, 森井 昌克, "誤り訂正符号に基づく偽装QRコードの構成法とその脅威," 情報科学技術フォーラム講演論文集 (FIT), Vol. 17, pp. 1-6, 2018.

爆弾解除

問題文

爆弾(に見立てたArduinoと回路)が与えられ、30分のカウントダウンがスタートします。緑と赤のLEDはそれぞれ即時起爆とカウントダウン停止を意味します。与えられた4つの線のうちいくつかを正しい順番で切る(のはもったいないので抜く)ことで、緑を点灯させないまま赤を点灯させてください。
複数のブレッドボードが連なって、その上に無数のICチップとジャンパー線が張り巡らされている。
試作時点での回路、解ける気がしない

(担当者: uni_kakurenbo, howard127)

@howard127が書いてくれた回路探索器を弄って (適当な評価値によって) "最も難しい" と判断された 4 盤面のうちの一つを出題しました.
思っていたよりもたくさんの方に解いていただけて大変嬉しかったです.

TeX

問題文は以下の通りです。

問題用紙の画像。内容は解説記事にも記載されています。
人間にもAIにも解けないらしい。動的解析の出番かも!?

(担当者: Suima)

なんやかんやあって、ピンチヒッターで作問をしたSuimaです!
作問RTAの経験になりました。
手で解く難易度ではなくなってしまっていて、申し訳ないなぁ…という反省。ヒントとか会場にちりばめておけば良かったですね。

作問担当による解説記事も公開されているので是非ご覧ください。

traPavilion CTF解説 TeX編
どうも!@Suimaです。今回は、traPavilionで出題したTeXの問題の解説をしていきます 問題文 以下のコードの出力に応じて、スタンプを押してください。実行コマンドはpdftex -halt-on-error filename です1. BOX 2. CRT3. BOT4. ANT5. そのほか \uccode`4=`^^41\uccode`7=`^^4e\uccode`5=`^^53\uccode`A=`B\uccode`N=`O\uccode`S=`X\uccode`B=`C\uccode`O=`Q\uccode`X=`T\uppercase{\uppercase{

Treasure Box

細長い紙切れと実は未開封のエナジードリンクの缶が置いてあります。(写真は撮り忘れましたごめんなさい)

これは作問時のラフです

(担当者: o_o, n3)

私が愛してやまない不等号ナンプレを題材に問題を作りました(@n3 が)。 私が適当に出題して @n3 に解かせた問題はなんと答えがただ一つに定まらない最悪な問題だったんですが、いい感じにヒントを配置してくれて、問題として成立するようになりました。問題をモンスターの缶に巻き付けるというアイデアは @quarantineeeeeeeeee が出してくれました。巻き付けずに解いている人も多かった気がします。肝心な宝箱の置き場所ですが、2F にあったでっかいディスプレイの前に置き、 Discord の #gps にその写真を投稿しました。物理会場を活かしつつ、 Discord を開いてもらうという意味でいい選択だったと思います。

o_oによるDiscordの投稿「箱ある」というメッセージとともに、ディスプレイの前に宝箱が置かれている写真が添付されている。
イベントの公式Discordに投稿しておきました。

感想

CTFコンテスト運営メンバーに感想を書いてもらいました。

o_o

全体的に CTF というよりも謎解き色の強い問題構成になったと感じます。本来は初心者向けのコンテストの予定だったのですが、想定以上の難問が並びひやひやしました。traPavilion 終了後に traQ 上で楽しかったという声を聞けてとてもうれしかったです。

yasako

CTF(というよりかは謎解きに近いですが)の作問の難しさが良くわかりました。そもそもCTFコンテストに全然出ていないので、勉強しつついろいろな分野にチャレンジしていきたいです!

n3

急にヘルプに入った割には、結構問題制作に関われて楽しかったです。最終的にただの謎解きペンシルパズルになって、いわゆるCryptoの暗号って感じでは無かったかもしれないと思いました。でも、言葉を暗号化するなら文字を符号化して、ってなると計算量が増えて面倒くさくて...みたいな検討をした結果、最終的にこのような形になりました。この苦労を、CTFの作問経験の足しにしたいと思います。

uni_kakurenbo

爆弾解除は,もともと 10 倍くらいの難易度のものを用意していたのですが,流石に難しすぎるということで,当日にナーフされました.
全体的に当初の想定よりも難しい問題が多くなってしまったという危惧はあったものの,楽しかったといったような声も何度か伺うことができて,その点については良かったと思います.私としても大変楽しませていただきました.

quarantineeeeeeeeee

traPavilionに展示側として関わることができてとても良い経験になりました。企画運営の大変さと楽しさを知ることができたと思います。景品のクリアファイルにもとても分かりづらい小ネタが隠されているので、よかったら探してみてください。提案してくださったCTF班の先輩方、イベントの準備・開催をしてくださった運営の方々、そしてこの展示・記事に足を運んでくださった方々、本当にありがとうございました。

quarantineeeeeeeeee icon
この記事を書いた人
quarantineeeeeeeeee

くあらんてぃーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーん

o_o icon
この記事を書いた人
o_o

25B / 鳩でもできる

yasako icon
この記事を書いた人
yasako

Web を勉強中です。競プロ・3DCGにも挑戦したいです

n3 icon
この記事を書いた人
n3

「n3」って読みます。主にアルゴリズム班で活動している、自称数強です。

uni_kakurenbo icon
この記事を書いた人
uni_kakurenbo

Suima icon
この記事を書いた人
Suima

LaTeXぺちぺち

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2021年8月12日
CPCTFを支えたWebshell
mazrean icon mazrean
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
2023年4月21日
CPCTFを開催します
noc7t icon noc7t
2021年4月26日
CPCTF2021 作問者writeup by zassou
zassou icon zassou
2021年4月26日
CPCTF2021 作問者writeup by hukuda222
hukuda222 icon hukuda222
2021年4月25日
CPCTF2021 作問者writeup by xxpoxx
xxpoxx icon xxpoxx
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記