- どうして私がCTFに!?
- misc: Unbearable To Read(解決)
- misc: kangaetenai(解決)
- Crypto: Composite Expo Crypto(未解決)
- extra: Unbearable To Readの原文は?
- カーテンコール
どうして私がCTFに!?
CTF。それは私にとって、セキュリティーエンジニアたちの競技だった。
私はセキュリティーエンジニアではないし、そちらの方を志しているわけでもない。だから、筑駒のパソコン研究部がCTFを開催するという知らせが流れてきたり、私が参加している東大のコンピュータ系サークルのTSGでチームとして参加するという話がまとまったりしても、私は特に気にしていなかった。部内にはCTFをやっている人が、それこそ自分で大会を開けるレベルの人がいるわけで、わざわざ私が出なくてもいいだろうと思っていた。
案の定と言うべきか、TSGチームは強かった。あっという間にほぼ全完を成し遂げ、残るはあと1問。それがUnbearable To Readだった。
なお、この「ほぼ全完」という輝かしい成績の裏には、ある1人の偉大な超能力者の絶大な貢献があったのだが、私はそれを後で知ることになる。 Crand Cryptoとか Mod Mono Paired Cryptoとか、こんな問題なんで解けるんだろう……(困惑)
10月30日から31日の夜、サークルのSlackの雑談チャンネルにいつものごとく入ってみると、どうやら何か問題を解いているらしいということが分かった。そして、具体的にどういう問題かを遡って読んでみたところ、以下のような問題だった。
丸止无和川加奴周利加宇奴和川加奴最毛末幾左川止宇久川仁久知分加数二十個答衣左安
カッコの内部は算用数字
pakenCTF{〇○○}
「なんじゃこりゃ。なんか巷で流行ってるという謎解きとやらか?」
これがCTFの問題というのは文脈を見ればすぐ分かったが、技術力が必要そうなものではなかったので、私も考えてみることにした。実際のところ、この問題は一般的な謎解きに比較的近かったわけだが。チーム人数可変の大会はサークルの人が飛び入り参加ができて楽しい。まあ普通のチームがせいぜい5人くらいなところを10人くらい参加してゴリラのごとく爆速で問題を解いてたのはちょっと数の暴力だと思わないでもなかったけど……
misc: Unbearable To Read(解決)
丸止无和川加奴周利加宇奴和川加奴最毛末幾左川止宇久川仁久知分加数二十個答衣左安
カッコの内部は算用数字
pakenCTF{〇○○}
とりあえず、この漢字の羅列を解読しなければ答えられなさそう。というわけで、漢字をぐっと睨む。
まず、「数」「二十個」「答」あたりの漢字はそのままの意味のような気がする。flagが数値だし、「数を20個答えよ」みたいな意味なのではないか?
なんとなく、ちょっと前にTwitterで流行った「偽中国語」の類か? と思うけど、さすがに「宇」と「毛」が数値を答える問題で両方出てくるとは考えにくい。いやまあ「宇宙に毛は何本あるか?」とかそういう意味不明な文章だったら別だけど、さすがにそんな解答だったら作問者を張っ倒す。
漢字を眺めていると、万葉仮名というか、平仮名の元になった漢字というか、そういうのが多いことがわかる。私はこれワンチャンあるんじゃね? と思いSlackに戻ったが、よく読むと万葉仮名説は既に提唱済みであった。というかそれ以外の説はなかった。まあそりゃそうか。
そして、よく見ると「最毛」は「最も」、「周利」は「周り」と読めるのでは?
この時点で私の中では、おそらく万葉仮名、もし違っても平仮名部分を漢字に変換するという発想は間違っていないだろうと考えた。
さらに、「和川加」が2回も登場するし、これを平仮名に変換すると「わつか」になる。これを最初に言ったのは私じゃなかった気もするけど。
ここまではまあ順当にいったけれど、ここで完全に停滞してしまった。「まきさつとうくつにく」ってどういう意味? 濁点を自由に補うにしても全然理解ができない。もう解く問題がないのでみんなこれを考えていて、人々からは「これ本当に解けるようになってるの?」といった声が続出した。ぶっちゃけ私も同じこと思った……
そして時刻は10月31日2時半、ハロウィーンなど無視してCTFに励むオタクが徐々に深夜テンションになる頃、私に天啓が舞い降りた!
「二十個」が数を列挙するのではなくて実は1つの数字を20桁答えるという意味だったら?
「わっか」「周り」、そして20桁続く数。
円周率では??? (発想の飛躍)
そして私は言った。
「これ円周率じゃないの、小数点以下20桁か整数部分含めて20桁か、小数点ありかなしか4通り試したらどれか通るんじゃないですか、知らんけど」(大意)
見事なほどの自棄。関西人すぐ「知らんけど」とか言う。自分では正直なところ雑な思い付きのつもりだったが、しばらくして次のような投稿が流れてきた。
pakenCTF{31415926535897932384}
え、マジで通ったの? 円周率小数点以下19桁かあ……
(今冷静に考えると、フラグは算用数字のみなのだから小数点はなしに決まっている)
これがこの問題の初正解だった。TSGが一番乗り、とりあえず全完。しかし問題文は読めていない。
ちなみに、この問題はあと終了直前に2チームが通しただけだった。というか、私が言うのもおかしいけどこれあと2チームもエスパーできんの????
↓エスパー成功者の例
ちなみにこの記事に書いてある「一番最初の〇だけ大きい」というのは解くとき気になってたんですが、writeupを見るとそんなことはなかったので、誤植だったらしい。
misc: kangaetenai(解決)
天才的エスパーを発動させてしまい調子に乗った私は、そのままCTFに参加することにした。我ながら現金よのう……
これは10月31日の12時半ごろに追加された問題。
見えないものを見ようとして問題文を覗き込んだら、不可視文字(ゼロ幅スペース)が含まれていたので、それを考慮して偶数番目だけ抜き出すと解ける。
Crypto: Composite Expo Crypto(未解決)
この問題の前座にはCrand CryptoやMod Mono Paired Cryptoがあるんですが、そちらはTSGが誇るエスパーが解決してしまっていた。なんでこんなの解けるの???????
というわけで、最後に追加されたTSG全完阻止問題。うら氏がエスパーしてしまった結果さらに追加でエスパー問が降ってきたとさ、おしまいおしまい。
今までの問題の流れから、almost full prime rangeが89で、keyが33なのは見当がついたけど、そこから先は何もわからなかった。
もし単純に1文字1文字を変換していたとすれば、フラグ{
がv
に対応することになり、すると逆にフラグに{
が含まれてしまい、おかしい。Crand Cryptみたいにrandのシードに33を突っ込むのかな? と思って試したりはしたけど、うまくいかず。
仕方がないのでタイトルからguessしようとしたけど、Expoが指数関数なのはいいとして、Compositeの何がcompositeなのか分からなかった。何をどう組み合わせるのさ……
このあたりでタイムアップ。TSGが誇るエスパーうら氏も無理だったっぽい。
公式writeupを見る限り、やっぱりこれ解くの無理じゃない?
extra: Unbearable To Readの原文は?
で、まだ残っている問題がある。結局あの漢字羅列文を復元できていない。
さっきのエスパーうら氏が「最後の『答えさあ』から考えるに琉球語では?」という提案をしていて、割とよさそうに見えたのだが、琉球語の有識者がいないため復元はおろか琉球語かどうかすら分からなかった。「丸どん」って何、そんな琉球語の語彙が本当に存在するの?
まあ、どう足掻いても共通語ではないのは自明だったので、ありえるとしたら津軽弁とか琉球諸語(八重山語等を含む)あたりのかなり共通語から離れた言語だとは思うのだが……
で、結論から言えば琉球語だったらしい。
うーん、「丸どんわっがぬ周りがうぬわっがぬ最もまぎさっとぅくっにくち分が数20個答えさぁ」かあ……この琉球語、正しいの? 琉球語本当に何もわからない……というかそもそも共通語の時点で若干非文っぽくないか?
これが250点は詐欺だと思いました。せめて350点とか400点。
カーテンコール
CTF、楽しいかもしれない。
いや、まあ言いたいことは分かる。私は人生初のCTFだから特に何も思わなかったけど、どうやらこの大会はCTFとしてもかなり異端だったらしいし、その上私が解いたのはCTFっぽくないmiscだけだ。それも、簡単な問題を解いたりエスパーをたまたま成功させたりしてしまっただけ。後から問題を見たらWebとOSINTは簡単だから全問解けたけど。
でも、それでも、解けたという事実は変わらないし、解ければどんな問題でも嬉しくなってしまうもの。
私はこの大会のおかげでCTFに少し興味を持つことができた。
だから、筑駒のパ研のCTF班のみなさんに、圧倒的感謝を。
追伸:
ちょっとやる気が起きたのでksnctfをやってみようと思ったら、既に1問目と3問目(Crawling Chaos)を中2の1月1日(2016年)に解いていたことが判明した。まあ確かにこの問題ならクソ雑魚web開発者だった中2の私でも解けそうではある。というか元日に祖父母の家でCTFやってたんかい、5年前の私……
そしてksnctf、難しいなこれ。三日坊主どころか2日保たない危険性……点数が低いものから順にやっていくか……