我的linux系统中有一个文件。我创建了一个python脚本,其中有一些pwn方法可以与之交互像这样:
from pwn import *
import sys
def main():
io = process("../../challenges/solveit")
io.recvline()
payload=b'A'*20
io.sendline(payload)
io.interactive()
if __name__ == "__main__":
main()
我想在运行py程序时检查地址值,就像在gdb中调用x/20wx $ebp-0x40一样。我该怎么做呢?
我是linux的新手,刚刚学习了gdb调试器。有人能解释我如何检查地址值,而运行一个漏洞脚本?gdb可以和pwn一起使用吗?
您可以使用gdb.attach
方法
pwnlib.gdb.attach(target, gdbscript='', exe=None, gdb_args=None, ssh=None, sysroot=None, api=False)
在新终端中启动GDB并连接到目标。
查看文档:https://docs.pwntools.com/en/stable/gdb.html#pwnlib.gdb.attach
对于您的代码,只需添加一行gdb.attach(io)
@@ -7,6 +7,7 @@ def main():
io.recvline()
payload=b'A'*20
+ gdb.attach(io)
io.sendline(payload)
io.interactive()
同样,你可能会得到像
这样的错误[ERROR] Could not find a terminal binary to use. Set context.terminal to your terminal.
这是因为您没有为pwntools设置启动gdb的终端。只需在导入pwntools后添加context.terminal = <your favorite terminal>
,如
from pwn import *
context.terminal = 'kitty'
或
import pwn
pwn.context.terminal = 'kitty'