Vim 如何在gdb中调试漏洞时提供输入

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 下面是对类似事件的响应的

我是一个开发和寻求建议的新手

我的问题是:我如何能一直从一个终端提供输入,并在另一个终端上调试我的程序

在使用图形界面时,我通常使用pwntools中的gdb.debug,但现在我只能通过SSH远程连接到运行二进制文件的机器,这意味着gdb.debug无法创建新的终端


我在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中运行
:!。/%
与在终端中运行
/template.py
相同。这只是运行攻击并进入交互模式

这只是在vim中执行脚本的一种快捷方式

稍后,这个家伙还使用
:!./%GDB
实际启动pwntools GDB会话。这与运行
python template.py GDB
是一样的

:!./%