2012年5月8日火曜日

SECCON CTF 2012/2/18-19 Forensic 300?

問題:「キーを見つけろ」

そして最初に渡されるファイルの先頭はこんな感じです。
しかし、こんなフォーマットのファイルは見たことがありません。普通、ファイルの先頭のヘッダを見てればなんとなく特徴を掴めるのですが、これははっきり言って謎でした。
そのためGoogle先生に頼るしかありませんでした。
そこで、繰り返し出現する「BUDlH0P6b」という文字列を検索すると、わずかなヒットともに、ishフォーマットの可能性を発見しました。
Wikipediaによるとishは1986年9月に発表されたバイナリとテキストを相互変換するための形式で、開発者の石塚さんから命名されたらしい(ishizuka)
#そんな古いフォーマット知らんわ笑
なので、ishフォーマットを展開できるExplzhを用いて展開しました。
するとテキストデータに変換されたのですが、まだ謎です。
 また未知のフォーマットかー。でも先頭がSで固定長のところを見ると何かの命令列のように思えなくもありません。そうしてGoogle先生に聞いてみるとMotorola S-record(SREC, S19)フォーマットにたどり着きました。
このフォーマットはどうやら携帯のメモリに書き込むための命令列のフォーマットのようで、例えば図の一行目の場合、
  • Start code : S
  • Record byte : 1
  • Byte count : 23
  • Address : 0x00
  • Data : 0x44...
  • Checksum : 0xDB
となっています。つまり0x00番地に0x44...を書き込めです。
これは指定したメモリ番地にデータを書き込む命令ということを考えると、当然メモりに何が書き込まれたかを知りたくなります。
つまりData部のみを抽出する必要があり、すると以下のようになります。
 先頭のDOCシグネチャ、V6、jxw.jexからこれは一太郎 Version 6の文書であることがわかります。もう解けたと思った瞬間。

まさかのパスワード付きですね。調べてみると今ではもうVersion 22になってセキュリティは万全ですが、Vserion 6のパスワード保護には脆弱性があるようで、それを解くアルゴリズムもあるみたいです。(ヒント:ビットシフト)
それを用いて解いてあげると、瞬く間にパスワードが得られます。
#速くてちょっとびっくりですね
それを入力してあげると、なんとCTFの歴史について語っている文書が手に入ります。
図には載せていないですが、そんな趣がある文書を経て、実は文書の内容と全く関係なく、キーワードが最後にぽつんと載っていることがこの問題の面白い点と言えますね。


0 件のコメント:

コメントを投稿