在 Linux 上使用 pwn 模块运行 python 脚本时如何使用调试器

问题描述 投票:0回答:1

我的 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一起使用吗?

linux security
1个回答
0
投票

可以使用

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'
© www.soinside.com 2019 - 2024. All rights reserved.