Tips

【CTF】SECCON 2016 Writeupその3【in 2016】
2016.12.15

【CTF】SECCON 2016 Writeupその3【in 2016】

SECCON 2016 オンライン予選

12月10日(土) 15:00から 12月11日(日) 15:00(日本時間)にかけて、SECCONオンライン予選2016が開催されました。

私も参加して結果は2問200点でした。そこ、去年と同点wwwとか言わないで~

writeupその1ではさかの予習問題と似た問題が出てきたぜ(^^)b ワイルドだろ~

writeupその2ではWireSharkの意外な使い方を身に着けたぜ(^^)b ワイルドd(ry

 

ここからは解けなかったけれど惜しかった問題の悔しさ満点の考察を書いていこう。

 

Vigenere 100はこちら

VoIP 100はこちら

※Vigenere 100とそっくり?な練習問題その1を解いてみたい方はこちらからどうぞ。

※本編には全く出なかったけれど、練習問題その2もあるので興味がある人はこちらからどうぞ。

 

 

 

Anti-Debugging 100

Binary 100の問題。問題文は以下の通り。なお、binはファイルへのリンクだったが、以下では削除している。

今回この形式多いなぁ。

Anti-Debugging
Reverse it.
bin
may some AV will alert,but no problem.

 

問題文を訳すと「戻せ。AntiVirusが警告するかもしれないが気にしなくてオケ」といったところだろう。

訳が適当なのはご愛敬

さて、どうやって解こうか。

 

bin

binとは

今回ダウンロードできたファイルには拡張子が無い。「bin」という名前に無いっている。拡張子はないが、バグではない。

windowsを扱っていると、拡張子ついているファイルしか見たことが無いという人もいるかもしれないが、本来コンピュータ内のファイルは拡張子が無くても保存できる。

わかりやすく言えば、拡張子は人間が何のファイルなのか区別しやすくしたり、コンピュータがどのプログラムで処理すればよいかを判断したりする目印としてついている。ただし、拡張子の中身と実際のファイルの中身は必ずしも一致していなくてよい。

例えば「うぃるす.txt」というファイルがあったとすると、拡張子だけ見ればテキストファイル(.txt)だが、実際は実行ファイル(.exe)になっていても問題はない。メールに添付されているファイルを開いただけでウィルスに感染した、なんて話はこの辺りの話が絡んでいる。詳しい話は省略

 

改めて、binとは

ここでbinとは何なのかもう一度考えてみる。binとは、コンピュータではbinary(バイナリ)の略であることが多い(それ以外のこともある)。

binaryとは2進数のことで、コンピュータ内のデータはすべて01で表現されているので、それを指してバイナリという表現を用いる。

しかし、binaryファイルと言っても、何のファイルなのかはわからない。

 

解析

fileコマンド

そこで、まずは定番のfileコマンドで何ファイルなのか調べてみる。fileコマンドとは、そのファイルがいったいどんなファイルなのか調べるためのコマンドで、Linuxなどで使用できる。

Linuxなどで。

・・・あれ、このPC、windows

と思いきや、筆者のPCには細工がして有り、fileコマンドが使用可能になっている。gccもあるよ

fileコマンドを使うと以下のように表示された。

>file bin
bin: PE32 executable (console) Intel 80386, for MS Windows

どうやら、windowsの実行ファイルらしい。とりあえず実行してみよう。

>bin

すると、以下の画面になった。

antidebugging

・・・パスワードってなんだよorz

 

バイナリエディタ

ここでいったん手詰まりになったので、バイナリエディタを使うことに。

バイナリエディタとは、ファイルの中身を16進数表記で表示してくれるエディタで、代表的な物にはStirlingなどがある。

こんな感じ↓

binary

ひとまずバイナリエディタで問題のbinを開いてみる。訳が分からない記号の羅列とにらめっこすること数十秒(早っ

下の表記を発見する。

antidebugging4

password、「I have a pen.」ってw

 

 

再び実行

再びbinを実行し、これでflagはこっちのものw

と喜び勇んでパスワードを入力すると。。。

antidebugging3

 

「Your password is correct.」

 

・・・えっ?

終わり?

何もないの??

 

再びバイナリエディタへ

もうわけが分からないよと思いながら再びバイナリエディタで開いて良く見てみる。

・・・が、これ以上ヒントはなさそうだ。

途中、以下の場所だけなぜか妙に気になった。が、特に何もなさそうだ。

antidebugging5

 

;aj&@:JQ7HBOt[h?U8aCBk]OaI38

 

ググってみても特に何も出ない。特に何もなさそうだ。

何だか勘が働いている。が、特に何もなさそうだ。

特に 何も なさそう だ。。。

 

そして解答へ

 

そのまま時間が来てしまいタイムアップ。

せっかくなのでほかの方のWriteupで答えを調べてみる。

SECCON 2016 Online CTF (Writeup的なメモ) – Shioshishio

上記のブログを読んでみる。

なるほど、この問題、解析ツールをうまく使っていかないといけないのか。

今の俺には難しいな。

なるほど、flagにbase85なるエンコードがかかってたのか。

で、エンコードされたflagの文字列は・・・

 

;aj&@:JQ7HBOt[h?U8aCBk]OaI38

 

・・・orz

これ、怪しいと思ってた奴だよorz

base85ってなんだよorz

64じゃないのかよorz

試しにデコードしたら確かにflagになったよ( } が抜けてたけど。)

 

まさかとおもわなかったじぶんをおこってあげたいの(+o+)

 

 

あんまりにも悔しいから、解けてないけどWriteup書いてやったぜ。。。

 

 

ちっくしょ~~~~~~~~~~\(^o^)/

 

↓良かったらこちらもどうぞ

Vigenere 100の解答はこちら

VoIP 100の解答はこちら

練習問題その1はこちら

練習問題その2はこちら

 

プログラミング入門にぴったりの人気連載

独学で学ぶ-pythonプログラミング

Recent News

Recent Tips

Tag Search