CTF 概要
タイトル | TsukuCTF |
コンテスト URL | TsukuCTF |
Writeup URL | TsukuCTF |
開催期間 | 9/11/2021 12:00PM ~ 9/12/2021 11:59AM |
参加者 | 379 |
問題数 | 36 |
運営 | 14 |
準備期間 | 17 日 |
準備期間
1 年くらい前から SecHack365'20 のトレーニーの間で CTF 開催したいよね〜って話になってました.がいろいろあって開催できず,9/11 に SecHack の全ての年のトレーニーが集まるイベントがあったので,それに合わせて裏開催しようとなりました.当初は SecHack 関係者のみで参加と考えていましたが,もったいないので外部公開しました.
作問レポジトリ(非公開)では 8 月 26 日に僕が first commit をしてたので,準備期間は 17 日と初開催にしてはかなり少ない方だと思います.ただ,SECCON 関係者や他コンテスト主催者などがトレーニーにいたこと,運営にガチプロの人数が多いこと,OSINT は問題によっては作問が楽なことからこの短期間で開催できました.
開発体制
サーバーはトレーニーの個人サーバに CTFd を乗せる形でデプロイしました.この辺は僕はよくわかっていませんが,Y ちゃんプロがうまいことやってくれました(これは天才).
各問題は以下の画像のようなドキュメントを共有しました.ここで一番気をつけているのは,謝ってフラグを参加者に配布しないことです.あとは適当に git 管理しています.
また各問題が解けるかちゃんとチェックする必要があるため,作問者(Writer)は PR を作成して,他のその分野が得意な人(Tester)がテストをして,誰か一人がちゃんと(エスパーとかせずに)解けたら merge するという形にしていました.(が,今回 Tester がミスした問題もありすみませんでした.例えば InterPlanetaryProtocol は Tester(うち一名は僕)が目で見てフラグの一致確認をしていたのでフラグミスに気づきませんでした.また logonly も同じような理由で本来 Accept すべきフラグの一つが設定されていませんでした.)
本番
まず CTFd の設定をする予定だった僕と Web 系サーバーの起動をする予定だった Y ちゃんが寝坊しました(開始ちょうどに起きました).その影響と直前に Web 系問題の一部に(そこそこまずい)バグが見つかり,修正の影響で 1.5h くらい遅くなりました.あと開始直後に気づいたミスでは,夜の間にデプロイしてた Web 問題(genesis)には Basic 認証をかけていました.しかし,朝は外し忘れました.
これらが終わったあとは問題文やフラグにミスがないか参加者の提出を見ながらチェックします(悪い言い方にすれば公開デバッグ).何人かが監視しながら(僕一人でも開始 3 時間くらいはほとんど見てた)怪しいのは共有してたのですが,どうやら Welcome の問題文や TORItsukushi の問題文が誤解されやすいとわかりました.Welcome に関しては本当に僕らのミスですぐ直しましたが,TORItsukushi はかなり検討しました.というのも以下の変更です(インラインコードは強調するためにたった今加えました).
[from]
文字列 TSUKUSHI を可能な限り何度も取りつくしてください。残った文字列がフラグです。フラグ内に文字列 TSUKUSHI は含まれていません。
[to]
大文字
文字列 TSUKUSHI を可能な限り何度も取りつくしてください。残った文字列がフラグです。フラグ内に大文字
文字列 TSUKUSHI は含まれていません。
というのもフラグがTsukuCTF{Would_you_like_some_fresh-baked_Tsukushi?}
ですが,TsukuCTF{Would_you_like_some_fresh-baked_}
の提出が半分以上(体感 7 割くらい)ありました.このままでも問題ないのですが,流石に多いなということで問題文を変更して通知しました.
本番というか準備ですが,今回の一番の戦犯は wildTsukushies, udon にeasy
タグをつけました.作問陣の中で,OSINT の画像検索問題ではまず google レンズで検索するのが基本みたいな話があり,google レンズやるだけは easy にしようって感じでこのようになりました.ですが,優勝された( 'ᾥ' )
さんは一番最後に,2 位のTSG
さんと 3 位のSatoooon
さんは解かれませんでした.これは決して煽りではありません. ( ←違うようです)( 'ᾥ' )
さんはあえて提出しなかったっぽい気がします.わかりませんが.
他にも僕はこの辺いっぱいやらかしましたすみません.
- InterPlanetaryProtocol,Writer は Misc と言ったのに間違えて OSINT として登録して,気づいた時にはコンテスト始まってた.
- 一問 Writer がフラグに
Tsukushi{}
と書いてて,気づかず CTFd にコピペして登録した. - digits で
@app.get("/program/digits/")
とすべきところを@app.get("/program/digits")
としました.これにより/?=
にアクセスすると localhost に飛びました.
次回に向けて
僕だけでこれだけ反省点があり,10 人以上の Writer がいるので反省点はかなりありました.次回はこのようなことがないよう一つ一つ対策できたらなと思ってます.
今年アンケートとかで僕の問題で人気だったのは digits, cafe, (簡単な)OSINT っぽいので,来年(?)も同じような難易度帯で出せたらなと思っています(ところで,100 点問題, 500 点近い問題は作りやすいですが,200~300 点あたりの問題ってかなり作るのむずかしいですよね...).
Q&A
TsukuCTF
の「つくし」の名前の由来は?
SecHack365 のポスターです.このポスター自体の由来は不明です.
来年は開催するの?
(TsukuCTF 運営ではなく個人の意見です)同じ難易度同じ内容でしたいです.今回 OSINT は場所特定,特に電車が多すぎた上,Google Lens ゲーだったのはかなり反省しています(時間なかった).OSINT と言ってもかなり幅広い内容があるので,次回はもっと幅広く出題したいです.
個人的にお気に入りの問題は?
Writer としては cafe, Tester としては tram です.tram のいいところとして,2 種類の Map を用意して共通点(重なる点)を抽出する的なのは解けると非常に爽快でした.あとは TORItsukushi は「つくしをとり尽くしてください」がクソ上手ギャグだったので,次回もダジャレ問を作ろうかと思います.
コンテストの様子