= 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 }}} フラグが得られた。