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)..

有人知道我错过了什么吗?

[我可能错过了 GDB 的一些基本内容,我正在学习 :) ]

4

1 回答 1

1

服务器程序通常使用“每个连接单独程序”的方法,其中成功后accept,父fork级由子级处理当前连接,并返回accept更多连接。

我不确定,但如果proftpd使用该模型,它将准确解释您描述的症状。

您可以使用(gdb) set follow-fork-mode child.

于 2012-12-30T02:56:38.313 回答