読者です 読者をやめる 読者になる 読者になる

ブログの名前なんて適当で良いのでは

説明を求めるな、記事を読め

CpawCTF(1st)を開催&作問したcryptoとmiscのwriteup

CTF

crypto全問題のwriteupとmisc200のwriteup

今回、僕の所属するCpawが僕のいる法政大学でCTFを開いた。僕は運営として、crypto3問とmisc1問を作った。なので、それらの自分なりのwriteupをまとめておく。参考になるほど詳しくないかもしれないので、わからないところは@にリプ飛ばしていただけると幸いです。

f:id:encry1024:20150902181150p:plain この問題は、ヒントよりThe Old Statement=旧約聖書があることからそれの暗号で検索するとAtbash暗号が出てくる。 これは、ABCD・・・XYZをZXY・・・CBAに写像している暗号です。

Cpaw{AtbashCipherAppearedInBible}

f:id:encry1024:20150902190259p:plain 題名より、典型的な暗号とあり、アルファベットのみから構成されていることから、シーザー暗号などを推測するが、まずはROT13などの定番な暗号を疑う。(初心者用CTFなので..)実装してもいいが、時間短縮のためにはGoogle検索で、rot13として調べて出たページを使うと以下のようにでるので、 f:id:encry1024:20150902190630p:plain

Cpaw{CaesarCipherIsVeryEasy}

f:id:encry1024:20150902190837p:plain これは==があることから、Base64を疑う。しかし、Base64は余ったところに==を使うので、前に==があるということは、文字を逆順にすれば良い。 Rubyで書くとこんな感じで出せる。

gist36c06b931cae422c4ccc

cpaw{base64isbasic}

f:id:encry1024:20150902192619p:plain

gist625f1f29fb89bd0443c8

これは、文字列をkeyに入った値で区切り、配列に格納して、それらの各要素を逆順にするというソースコードとなっている。 $ruby Original_Cipher.rb 3 ********************** $ihtnesyrcitpinolbskcopicre がヒントとなっているので、keyにARGV[0]を入れているので、3文字区切りにして、それらの要素を逆順にする。 iht → thi nes → sen yrc → cry ・・・(ry として行っていくと

Cpaw{thisencryptionisblockcipher}

f:id:encry1024:20150902211954p:plain これは、俗に言うエスパー問題ですね() 競技中に自分がヒントを出す予定だったのですが、ちょうどパシられていた。 大きなヒントとしては、題名である。Traceつまり、「なぞれ」という意味である。 654edcvbをキーボードでなぞってみると・・・C 67890ijmをキーボードでなぞってみると・・・T 以下同様に行っていくと以下のように文字列が得られる。

Cpaw{C_T_F_I_S_F_U_N}

開催した際に感想 & 内心の気持ち

正直最初から運営として動くことを考えておらず僕自身も普通に解くつもりだった。しかし、作問と運営ひとりはさすがにまずいということで途中から運営側として動き出した。僕は主に暗号問題の作成を頼まれたので、作問にするに至って様々な古典暗号に触れ、解読、暗号ツールRubyで書いたりなど、作問側としてはとても勉強になった。 しかし、サーバー周りなどは全く触れておらず、すべてパロック&193s頼みだったので、そこは申し訳なかったという気持ちと感謝です。次回いつ開催になるかはわかりませんが、今度は今回作ることができなかったweb、pwnなどの問題を追加することを目標に知識を深めていきたいと思う。また、もっと積極的にいろんなCTFの大会にもオンラインで出てみようと決心した日だった。なので、誰でもいいので、知識を集めながらみんなでワイワイ楽しみながら、かつ勉強になるようにCTFをプレイしていきたいなと思った。次あるのはMMACTFなので、チームを組んでできたらいいなぁっておもっています。最悪ひとりでもプレイします。

 これからの目標として以下のことをCTFで頑張っていきたい。

これらは、CTFに関わらず勉強しておいても無駄にならないことだと思うので丁寧に学んでいきたいと思う。