Gdb 调试服务器[proftpd]

Gdb 调试服务器[proftpd],gdb,exploit,Gdb,Exploit,我正试图调试proftpd,以便更好地理解此漏洞。易受攻击的部分在mod_sql.c中,我尝试中断sql_prepare_where函数(即堆溢出发生的地方),然后调用用户。。。然后通过。。。命令,但它从未被触发 为了找出为什么我在mod_sql.c的数百行中都有断点,然后启动程序(带有完全调试选项),会触发一些断点(sql_setuserinfo、set_sqlauthenticate、get_auth_entry…),但只是在启动过程的一开始,然后,当程序进入主循环时,不会发生其他与断点相关

我正试图调试proftpd,以便更好地理解此漏洞。易受攻击的部分在mod_sql.c中,我尝试中断sql_prepare_where函数(即堆溢出发生的地方),然后调用用户。。。然后通过。。。命令,但它从未被触发

为了找出为什么我在mod_sql.c的数百行中都有断点,然后启动程序(带有完全调试选项),会触发一些断点(sql_setuserinfo、set_sqlauthenticate、get_auth_entry…),但只是在启动过程的一开始,然后,当程序进入主循环时,不会发生其他与断点相关的事情(proftpd的日志提到用户和PASS命令被分派到mod_sql.c)

有人知道我错过了什么吗


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

服务器程序通常使用“每个连接都有一个单独的程序”方法,在成功的
接受
后,父
分叉
让子代处理当前连接,然后返回到
接受
创建更多连接

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


通过使用
(GDB)set follow fork mode child
,服务器程序通常使用“每个连接都有一个单独的程序”方法,在成功的
接受
后,父
fork
将一个子级用于处理当前连接,您可以要求GDB调试子级而不是父级,然后返回到
accept
ing更多连接

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

通过使用
(GDB)set follow fork mode child
,您可以要求GDB调试子级而不是父级