Common Exploiting Problems
远程利用中的文件描述符
当向调用**system('/bin/sh')
**的远程服务器发送利用时,这将在服务器进程中执行,/bin/sh
将期望从stdin(FD:0
)接收输入,并将输出打印在stdout和stderr中(FDs 1
和2
)。 因此,攻击者将无法与shell进行交互。
修复此问题的一种方法是假设服务器启动时创建了FD编号3
(用于监听),然后,您的连接将在**FD编号4
中。 因此,可以使用系统调用dup2
**将stdin(FD 0)和stdout(FD 1)复制到FD 4(攻击者连接的FD),从而使得一旦执行后可以联系shell。
Socat & pty
请注意,socat已经将**stdin
和stdout
传输到套接字。但是,pty
模式包括DELETE字符**。因此,如果您发送\x7f
(DELETE
-),它将删除您的利用程序的前一个字符。
为了绕过这个问题,必须在发送任何\x7f
之前添加转义字符\x16
。
在这里你可以 找到这种行为的示例。
最后更新于