SECCON 2014 OnlineのWrite up

夏です。CTFの季節がやってきました。
今年のSECCON CTFはオンライン予選が最初でした。
朝9時から21時までの12時間という短い時間で行われました。
私は今回もwasamusumeで参加しました。

私は他の用事があったので、がっつりやれませんでしたが
息抜きに問題を解いたのでWrite upを書いてみます。

[暗号 100] decode me

encode.txtというファイルがあるので中身を見てみます。

FRPPBA 2014 囹裃癇圄唹囮噪哢嘯喞囹嚼圉侑
ebg13/47 囹簷嘲囓圉錙囑嚠侑
區匱匏壟坏堋奚囑笙鰰囹奐壟倬奚囑嘴喙嘯囓囹啌簷嘴哢嚀嚴噐俟
囓嗷嗾喟噫囑佰噎啣囑囓嗾噬嚆嗷哢嚠俎
圖垪壥圉癶燿酖衙囹竏嚀囎噐唳嚀囎嘲囂噪嗷侑
咐咬咒咆弌哇匆卩匐佩匏卞區佩劼咄咀咀咨哈听吽呀吼丐

どうも文字化けしているようです。
FRPPBA 2014の部分から「SECCON 2014」をROT13したのではないかと推測できます。
デコードしてみましょう。デコードで使用したのはnkf (ネットワーク漢字フィルター)というプログラムです。
nkfは日本語の文字コードの扱いが得意なのが特徴です。
使い方は以下のページを参考にするといいでしょう。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230849/
nkfのオプションにROT13/47で変換するオプションがあるので使ってみます。

$ nkf -r encoded.txt
SECCON 2014 に参加のみなさまこんにちは。
rot13/47 に気付くとは流石です。
nkfコマンドで簡単にデコードできることにも気付きましたか?
というわけで、おめでとうございます!
フラグは半角英数文字に変換してから入力してください。
FLAG{Have fun SECCON2014}

ということで、答えは最後の文字列を半角英数文字にした、Have fun SECCON2014でした。

ROT13ってなんだろう?

無事に答えが求められたわけですが、Write upとしてはいささか面白くないですね。
そこで問題で取りあげられているROT13についてもう少し掘り下げてみようと思います。

ROT13は単換字式暗号と呼ばれる古典暗号です。
アルファベット文字列をシフトさせることで意味のある文字列を分からなくする手法です。

以下はROT13での変換表になります。

平文 :a b c d e f g h i j k l m n o p q r s t u v w x y z
ROT13:n o p q r s t u v w x y z a b c d e f g h i j k l m

これを元にSECCON 2014を置き換えてみます。数値はそのままです。
S -> F
E -> R
C -> P
C -> P
O -> B
N -> A
置き換えることが出来ました。戻す時は再度ROT13をすればOKです。

さて、なぜROT13なのでしょうか?
13にすると可逆性(変えたものを元に戻す性質)を持つことが出来るからです。
13はアルファベットの文字数が26の半分の値です。
13でシフトすると図にあるように前半の文字列群と後半の文字列群を入れ換えることになります。
ROT13

0 not 0 -> 1
0 not 1 -> 0

2進数のnot演算と同じようなものですね。

最後に

わさわさなメンバーもWrite upを書いているので、こちらも紹介しておきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください