本当は gethostbyname() を通すことでホスト名指定も可能にできるのですが, CentOS環境で gethostbyname() を使うとスタティックリンクできず 他環境で使いたいときに共有ライブラリの相性問題など発生して弊害あるので, gethostbyname() は使わずにIPアドレスを直接指定する,ということにしました. (検証で使うぶんには,共有ライブラリの相性問題起きることよりも ホスト名使えないほうが実害少ないと判断)
Makefile中の以下のオプションを有効にすることで gethostbyname() を有効化して ビルドすることができます.ホスト名を使いたい場合には,これでビルドしなおして ください.
USE_GETHOSTBYNAME
C言語ベースでのデバッグをしたい場合には,C言語ソースコードが必要です (C言語ソースコードが無くても,アセンブリベースでデバッグすることは可能です). また対応するC言語ソースコードの場所は,実行ファイル中にフルパスで格納されて いるため,C言語ソースコードの置き場所は,コンパイルしたときと同じディレクトリ 位置にする必要があります.
bof-sample-1.1 以降は,以下に展開してください.(/home/user 直下) このように展開しておくと,GDBで実行ファイルcalendarをデバッグする際に, C言語ソースコードであるcalendar.cが適切に参照されるようになります.
% cd /home/user % unzip bof-sample-1.1.zip
exploit/Makefile の CAT / NETCAT の定義を変更することで, システム標準の cat / netcat を利用することもできます.
ただし検証用の簡易 cat は,ファイルの間に短いウェイトを入れてあり, ファイルの転送(バックドア用の簡易telnetdの転送)などは,このウェイトが無いと うまくいかないようです.(catコマンドの実行前に転送が始まってしまうため?)
うまくいかない場合は,添付の簡易cat/簡易netcatを利用してください.
なお簡易netcatに関しては,Windowsから検証する際に,通常のnetcatを使おうとすると セキュリティ的に危険なソフトウェアとしてセキュリティソフトが検知してしまう 場合があるため,代替として添付しているという意味もあります.
Windows用ツールは,MinGWでビルドしています. tools/Makefileの以下のオプションを有効にすることで,Windows用にビルドされます.
USE_MINGW