Vim 如何在gdb中调试漏洞时提供输入
我是一个开发和寻求建议的新手 我的问题是:我如何能一直从一个终端提供输入,并在另一个终端上调试我的程序 在使用图形界面时,我通常使用pwntools中的gdb.debug,但现在我只能通过SSH远程连接到运行二进制文件的机器,这意味着gdb.debug无法创建新的终端Vim 如何在gdb中调试漏洞时提供输入,vim,terminal,gdb,exploit,Vim,Terminal,Gdb,Exploit,我是一个开发和寻求建议的新手 我的问题是:我如何能一直从一个终端提供输入,并在另一个终端上调试我的程序 在使用图形界面时,我通常使用pwntools中的gdb.debug,但现在我只能通过SSH远程连接到运行二进制文件的机器,这意味着gdb.debug无法创建新的终端 我在VIM中看到了一个使用这种技术的人。如何实现这一点?gdb.debug如果使用SSH,只要将context.terminal设置为正确的值(例如tmux),就应该仍然有效 如何使用pwnlib.gdb 下面是对类似事件的响应的
我在VIM中看到了一个使用这种技术的人。如何实现这一点?
gdb.debug
如果使用SSH,只要将context.terminal
设置为正确的值(例如tmux),就应该仍然有效
如何使用pwnlib.gdb
下面是对类似事件的响应的复制和粘贴:
您可以使用与gdb的接口
可以使用gdb.attach()函数:
从文档中:
bash = process('bash')
# Attach the debugger
gdb.attach(bash, '''
set follow-fork-mode child
break execve
continue
''')
# Interact with the process
bash.sendline('whoami')
或者可以使用gdb.debug():
pwntools模板包含一些代码,可以让您开始使用gdb进行调试。您可以通过运行pwn template./binary\u name>template.py
来创建pwntools模板。然后,在运行template.py进行调试时,必须添加GDB参数:/template.py GDB
如果您得到[ERROR]无法找到要使用的终端二进制文件。
,您可能需要在使用gdb之前设置上下文.terminal
如果您使用的是tmux,以下命令将在新的水平拆分窗口中自动打开gdb调试会话:context.terminal=[“tmux”、“splitw”和“-h”]
并使用新的gdb会话窗口垂直拆分屏幕:context.terminal=[“tmux”、“splitw”、“-v”]
(要使用tmux,请在计算机上安装tmux,然后键入tmux
启动它。然后键入python template.py GDB
)
如果上述任何一项都不起作用,那么您可以始终启动脚本,使用ps aux
,找到PID,然后使用gdb-p PID
附加到正在运行的进程
Vim解释
你不需要像你链接的视频中的那个家伙那样使用vim来使用pwntools的gdb功能,但这里有一个关于他所做的事情的解释(无论如何vim也是一个不错的工具):
在vim中编辑他的pwn脚本时,guy首先执行以下命令:
:!./%
在vim中进入命令模式:
执行shell命令!
基本上是您当前在vim中编辑的文件名%
:!。/%
与在终端中运行/template.py
相同。这只是运行攻击并进入交互模式
这只是在vim中执行脚本的一种快捷方式
稍后,这个家伙还使用:!./%GDB
实际启动pwntools GDB会话。这与运行python template.py GDB
是一样的
:!./%