whatson
whatsonをstringsしてみるとupxで圧縮されていることが分かったので解凍した。
$ upx -d whatson
実行してみるとUnable to open/validate interpreterというエラーメッセージが表示された。METASMで逆アセンブルしてmain関数を見てみると、./python2.7というファイルの有無でこのメッセージの表示が分岐されていることが分かるので、python2.7というファイルを作成して実行した。
$ ln -s /usr/bin/python2.7 . $ ./whatson The gates of heaven remain closed (シェルがKILLされる)
シェルがKILLされるといろいろやりづらいので、KILLする箇所を特定して潰すことにした。 METASMのsigmatcherでUbuntu14.04のlibc.aを用いてマッチしたところ、kill関数は0x408670にあることが分かった。 lldbで0x408670にブレークポイントを貼り(gdbは動作しなかった)backtraceを試みたら、関数0x4010caがkillを呼び出していることが判明した。そこで、0x408670をc3(ret)に書き変えて潰して実行した。
$ ./whatson Greetings from elfmaster 31C3_there_is_nothing_like_first_hand_evidence
フラグが得られた。