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とそっくり?な練習問題その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
すると、以下の画面になった。
・・・パスワードってなんだよorz
バイナリエディタ
ここでいったん手詰まりになったので、バイナリエディタを使うことに。
バイナリエディタとは、ファイルの中身を16進数表記で表示してくれるエディタで、代表的な物にはStirlingなどがある。
こんな感じ↓
ひとまずバイナリエディタで問題のbinを開いてみる。訳が分からない記号の羅列とにらめっこすること数十秒(早っ
下の表記を発見する。
password、「I have a pen.」ってw
再び実行
再びbinを実行し、これでflagはこっちのものw
と喜び勇んでパスワードを入力すると。。。
「Your password is correct.」
・・・えっ?
終わり?
何もないの??
再びバイナリエディタへ
もうわけが分からないよと思いながら再びバイナリエディタで開いて良く見てみる。
・・・が、これ以上ヒントはなさそうだ。
途中、以下の場所だけなぜか妙に気になった。が、特に何もなさそうだ。
;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^)/
↓良かったらこちらもどうぞ