假设./your_elf_program已经运行了,payload字节数组包含不可见字符,无法进行utf8编码,这个时候怎么输入?
如果 ./your_elf_program
已经在运行,并且你需要发送包含不可见字符的 payload 字节数组,你不能直接通过常规的命令行输入,因为终端不支持非 UTF-8 编码的数据输入。在这种情况下,你可以考虑以下几种方法:
-
使用 Python 脚本:
如果你可以与程序的标准输入进行交互,可以编写一个 Python 脚本来发送这些字节。例如,如果你在一个 shell 中运行你的程序,并且它正在等待输入,你可以尝试以下命令:python -c 'import sys; sys.stdout.buffer.write(b"\x00\x01\x02...")'
然后将这个命令的输出重定向到程序的输入中。你可以使用管道(
|
)或者进程替换(<()
)来完成这个操作。 -
使用 GDB:
如果你的程序已经在运行,并且你可以使用 GDB 附加到进程,那么你可以使用 GDB 来修改内存或者调用函数来发送你的 payload。通过 GDB,你可以在适当的时间点停止程序的执行,然后使用call
命令调用如write
的函数来发送你的 payload。 -
使用
pwntools
:
如