yoshikingのがんばる日記

あたまよくないけどがんばります

InterKosenCTF 2020 で作問した

チームinsecureでInterKosenCTF 2020を開催しました。 3回目の開催ですね。 軽く振り返ろうと思います。

運営メンバーの記録

furutsuki.hatenablog.com

ptr-yudai.hatenablog.com

準備

今年もやろうというのはかなり前から決まっていたと思います。 問題repositoryができた日付を確認すると4月10日でした。 そんな中、ちょうど4月から院試の方に集中するため、僕個人はCTFの活動をお休みしてました。 作問の方もしておらず、数問テストをしていたと思います。

8月になって院試も一段落したのですが、その頃には(僕の実力で作問できそうな難易度の)問題が出揃っていたので、今回はテストだけかな〜と思っていました。 でも、問題の出揃い関係なく問題を作りなさいというお達しが来たので計3問(2accept, 1reject)作りました。 出題した2題に関して軽く想定解を書いていこうと思います。

想定解

[crypto] ochazuke

Tester's Writeup: ochazuke [InterKosenCTF 2020] - HackMD

RSA、block暗号とメジャーな分野はもう出ていたので、被らない分野で楕円曲線とかで作るか!と思い作問しました。

解法は署名の関数をよく読むと、sha1 collisionを使って異なるメッセージから同一のkを使用するケース(ECDSAの有名な脆弱性)に持ち込めることがわかるので、あとは解くだけです。 非想定解として、送るメッセージをb"ochazuke" + nにすることで、checkをすり抜けられ(mod nが取られるので)ochazukeの署名が得られるようです。 これはかなり簡単な方法で泣いています。すいませんでした…

単純な脆弱性のみを使っていて、medium(bitcryptoよりは簡単めな)の想定で出題しました。 solve数に関しては公開が一番遅かったのもあると思いますが、想定より少なかったです。 問題名はこの夏お茶漬けをよく食べるので、ochazukeにしました。 梅干しと一緒に食べています。

[misc] No pressure

Tester's Writeup: No pressure [InterKosenCTF 2020] - HackMD

miscの簡単枠として作った問題です。 これは、zlibの圧縮方式に着目して、圧縮後はRC4つまりストリーム暗号で暗号化しているので平文と暗号文の長さが変わらないことに注目することでフラグを求められます。

この問題はsolve数が少なかったですね… 実際、これはrejectよりのaccept(これよりいい問題できたらrejectする)だったわけなんですが、僕自身ももうちょっとよくできたんじゃないかと後悔しています。 知っている人からすると自明で、知らない人にはとっつきにくい問題となってしまったのは反省です。 作問むずかしい…

最後に

参加してくださった皆様ありがとうございました。 また、運営のtheoremoon, ptr-yudaの2人もお疲れ様でした。 毎度のことながらサーバー周りいつもありがとうございます。

去年からですが、InterKosenCTFで初級〜中級者向けの問題を作って、zer0tpsCTFで中級〜上級者向けを作っています(運営が少し違いますが)。 次は多分2021年の春?(全然決まってない)にzer0ptsCTFが開かれると思うので、それまでたくさんCTFをしてぜひチャレンジしてください。

類題があるのは簡単・単純な問題だとどうしても存在するのはしょうがない部分があるとは思いますが、やっぱり落ち込んでしまいます。(どのような難易度の問題でもこの問題設定は見たことがなくておもしろいとか言われるような問題を作りたいものです…) 非想定解も防ぐには中々難しい… zer0ptsCTF、作問できるかな(超絶心配)