TDUCTFに参加した話

3/29渋谷セルリアンタワーで行われたTDUCTFに参加してきましたconnpass.com
前回の学内向けCTFにも参加しましたが、今回はそれ以上の規模で行われていて主催のnomukenくんの頑張りがとっても伝わってきました
また会場のセルリアンタワーがとてもきれいで興奮していたのを覚えております

さてWriteUpについてなのですが...
私は今回問題をあまり解けていません
そのためこの記事はそういったものはほぼありませんのでご了承ください

今回の問題で一番印象深いのはバイナリ問題の'おきてる(?)'です
pcapファイルなのにWiresharkで開いてもFLAGにはたどり着けない、まさにジャンルを確認しなさいって問題でした

しかしまぁ、この問題相当考え込まれているなと思うわけですよ
常套手段のstringsコマンドをただ使うだけではFLAGにたどり着けません

f:id:muni_sys:20150331232937p:plain

FLAGは各三文字以下に断片化されていて、stringsコマンドの"4文字以上の文字列を出力"をうまく掻い潜っています

断片化されているのが気が付ければ

# strings -n 3 question.pcap

こんなコマンドで

f:id:muni_sys:20150331233704p:plain

あっさり解決するんですけどね(それでもまだ最後の数文字がはじかれている)

これをsubmitするにあたってバイナリを眺めることが必要不可欠となります
Windowsには優秀なバイナリエディタ'Stirling'がありますので、それを使ってバイナリを眺めるのもよいでしょう

でもなんというか、ただバイナリを眺めるのではなく...
可読性をもうちょっとあげられるような、そう置換など即時編集できるような手軽なアプリケーションがあれば...

そんな"我が同胞"におすすめのアプリケーションが
vim

このきじのほんだい

  • vimを使ってバイナリの可読性をあげよう
  • バイナリアンに殴られそうな強引なアプローチがあります
  • 宗教戦争には関与いたしません

バイナリエディタとしてのvim

linuxのコマンドでxxdがあります

f:id:muni_sys:20150401000813p:plain

このコマンドはファイルを16進数表記にして表示させることができるのですが、
vimでもこのコマンドがあったりします

まずは見たいファイルを

# vim -b question.pcap

こんな感じでvimで開いて

f:id:muni_sys:20150401001100p:plain

:%!xxd

このコマンドを使えば

f:id:muni_sys:20150401001241p:plain

こんな感じで表示できます
もちろんアドレス部を編集すれば内容に反映されますし、アドレス検索も簡単に行えるのでバイナリエディタと同じように扱えます

このままだと「煩わしいピリオドね!」って感じでクッソ見辛いですね...
だったら大胆に置換しちゃいましょう!

:%s/[.]/ /g

f:id:muni_sys:20150401003345p:plain

見るだけだったらアドレス部もいらないのでビジュアル短形でアドレス部を範囲選択し消してあげればもっと見やすくなります

f:id:muni_sys:20150401003631p:plain

ここまでやったらあとはいらなそうな行をばっさばっさ切っていくだけなので、正規表現を用いてがしがし削っていきます

:v/\v[a-zA-Z0-9}{_]{3}/d
-----
:v/xyz/d xyzを含まない行の削除
\v very magic(正規表現で使われる記号の有効化)
-----

f:id:muni_sys:20150401004354p:plain

とっても見やすくなりました
やっぱりvimは最高やな!

というわけで今回はvimでこんなこともできるよっていう紹介でした

我が同胞に告ぐ!