2012-12-30 79 views
1

我試圖調試proftpd以更好地瞭解此漏洞利用http://www.phrack.org/issues.html?issue=67&id=7。易受傷害的部分在mod_sql.c中,我試圖斷開sql_prepare_where函數(這是堆溢出完成的地方),然後調用USER ...和PASS ...命令,但它永遠不會被觸發。爲了找出爲什麼我有斷點的所有數百行的mod_sql.c,然後啓動程序(帶有完整的調試選項),一些斷點被觸發(sql_setuserinfo,set_sqlauthenticate,get_auth_entry ...),但只在非常然後當程序進入主循環時,沒有其他斷點發生相關事件(而proftpd的日誌提到USER和PASS命令被分派到mod_sql.c)。調試服務器[proftpd]

有人會知道什麼我丟了?

[這是可能的,我失去了一些東西GDB是必不可少的,我對輥:)學習]

回答

1

服務器程序通常使用「單獨的程序爲每個連接」裏成功accept之後方法,父fork一個孩子可以處理當前的連接,並返回accept更多的連接。

我並不確定,但如果proftpd使用該模型,它將準確解釋您描述的症狀。

通過使用(gdb) set follow-fork-mode child,您可以要求GDB調試子代替父代。

+0

非常感謝:D – joub