1

このエクスプロイトhttp://www.phrack.org/issues.html?issue=67&id=7をよりよく理解するために、proftpd をデバッグしようとしています。脆弱なセクションは mod_sql.c にあります。sql_prepare_where 関数 (ヒープ オーバーフローが行われる場所) をブレークポイントして、USER ... および PASS ... コマンドを呼び出しようとしましたが、トリガーされません。

mod_sql.c の数百行すべてにブレークポイントを設定してからプログラムを起動する理由を調べるために (完全なデバッグ オプションを使用して)、いくつかのブレークポイントがトリガーされます (sql_setuserinfo、set_sqlauthenticate、get_auth_entry...)。その後、プログラムがメイン ループに入ると、ブレークポイントに関連する他に何も発生しません (proftpd のログには、USER コマンドと PASS コマンドが mod_sql.c にディスパッチされることが記載されています)。

私が欠けているものを誰かが知っていますか?

[ GDB に不可欠な何かが欠けている可能性があります。私はロールで学んでいます :) ]

4

1 に答える 1

1

サーバー プログラムは、多くの場合、「接続ごとに個別のプログラム」メソッドを使用します。この方法では、成功した後accept、親はfork子に現在の接続を処理させ、acceptさらに接続を再開します。

よくわかりませんが、proftpdそのモデルを使用すると、あなたが説明した症状を正確に説明できます.

を使用して、親ではなく子をデバッグするように GDB に依頼できます(gdb) set follow-fork-mode child

于 2012-12-30T02:56:38.313 に答える