sekai013's blog

JavaScriptとかを勉強する

KSNCTF #2 Easy Cipher

聞いたことはあるけど意味は知らない言葉だった CTF, 気まぐれでググってみたら面白そうだったので

CTF初心者: 社会人のための趣味CTFまとめ

この記事を参考にして, ksnctf というのをググり倒しながら遊んでる。CTF 知らない人は気まぐれでググってみよう。
飛ばし飛ばし30番くらいまで解いたので、復習を兼ねてメモしていくので、もっと効率よく解けるとかこれはこのページが参考になるとかあったら教えてください。なんでもします。

問題

ksnctf - 2 Easy Cipher

以降には解き方に関わる記述があるので知らない人やったことない人はまずCTFでググって、興味を持ったらこのページを閉じよう!!!

考えたこと

えっこんな訳のわからん文だけで何をしろとかの指示もないのか(ドン引き)

初めてなので面食らったけど、問題文読んでるとスペースで区切ってくれてるし、 EBG, KVVV, yrggre, gur, SYNT とかが何回か出てきてるので、こいつらは単語で、アルファベット1文字が別のアルファベットに対応してるんだろうという気がした。換字式暗号とかカエサル暗号とかいうやつ。

特に怪しいのが SYNT で、これは絶対 FLAG だろと思ったので、とりあえず変換したらこうなった。

EB4 KVVV v1 a 1vzclr lr44re 1ho14v4h4vb3 pvcure 4ua4 erclapr1 a lr44re jv4u 4ur lr44re KVVV lr44re1 af4re v4 v3 4ur alcuaor4. EB4 KVVV v1 a3 rkazclr bf 4ur Par1ae pvcure, qrirlbcrq v3 a3pvr34 Ebzr. flag v1 flag1jmgkOW1aZdjkkaH. V31re4 a3 h3qre1pber vzzrqva4rl2 af4re flag.

s, y, n, t はそれぞれ f, l, a, g に変換、
もとの f, l, a, g はそれぞれ 1, 2, 3, 4 に変えてある
いろいろあって変換した文字に関しては大文字小文字を区別していない

これで問題文を読むと、最後から2番目の af4re は絶対 after だろって気がしてきたので
(4 -> t), (r -> e), (e -> r) の変換しようと思ったけど、 4 っていうのはもとの暗号文中の g だし、いままでの変換が正しいなら g と t, r と e をそれぞれ入れ替えてるので, 他のやつも全部入れ替えるだけなんじゃないかという気がしてきたので、入れ替えてくれるコード書いた。

https://github.com/sekai013/ksnctf/blob/master/easy_cipher/easy_cipher.rb

どんどんスワップしていったらこんな感じになった。

ROT XIII is a simple letter substitution cipher that replaces a letter with the letter XIII letters after it in the alphabet. ROT XIII is an example of the Caesar cipher, developed in ancient Rome. Flag is ***********. ****** ****** ***** ****.

ここで、さっき書いたコードで Caesar のスペル間違えてることに気付いて急いでコミットしなおした。

アルファベット入れ替えただけどころか、全部13文字分ずらしただけのROT13という暗号らしい。見たことある気がするけど覚えてなかった。

ROT13 - Wikipedia

旗入力したら通った。

思ったこととか

換字式暗号はドイルの「踊る人形」とかポーの「黄金虫」とかにもうちょっと難しいやつが出てくる。

www.221b.jp

エドガー・アラン・ポー Edgar Allan Poe 佐々木直次郎訳 黄金虫 THE GOLD-BUG

知ってたからノーヒントで解けたという感じでラッキーだった。