以下のURLに模範解答が載っていたので、それを読んで理解した内容をまとめています。
問題文は次の通りで、サーバ上でListenしているプログラムにexploitを打ち込んで、サーバ上に置いてあるkeyが格納されたファイルを取得する問題でした。
credentials: ctf4.codegate.org 9000
BINARY FILE: http://ctf.codegate.org/files____/easy
ダウンロード可能なファイルはLinuxで実行可能なするELF 32bitバイナリです。
$ file easy easy: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
実行すると標準入力から文字入力を求められます。問題サーバではinetd経由などで動作していると思われます。
$ ./easy Input: a Thanks. Goodbye
入力される文字が長いとプログラムがsegmentation faultで落ちるいつものパターンの問題なのですが、 少しshellcode実行が難しい環境での問題でした。
$ msfelfscan -j eax ./easy [./easy] 0x080484df call eax 0x0804860b call eax
