Pwndbg和Pwngdb的名字很像,是两个重要的PWN调试工具,但Pwndbg是基础工具,Pwngdb是辅助工具,这两个工具都需要安装。
Pwndbg是Linux系统下gdb的常见辅助工具集合,可以提供直观的内存相关信息、栈空间排布信息、寄存器的值等,是进行堆分析的利器。它的安装方法较简单,在Ubuntu系统中输入如下命令即可实现自动安装。
安装完成后,我们还需要安装一个非常实用的插件—Pwngdb,这个插件可以补充Pwndbg中缺失的堆分析的部分命令,如parseheap、lib等。这些命令在堆分析中提供了非常直观的数据方法。Pwngdb的安装命令如下:
这两个工具的基本命令和调试命令如表2-3和表2-4所示。
表2-3 基本命令
表2-4 调试命令
读者在了解这些命令后,可以自己尝试调试一个程序。假设需要被调试的程序为aa,那么在终端命令行输入如下命令即可:
我们可以输入lib、parseheap、bins等命令来查看堆的申请状态。命令调试如图2-40所示,图中展示了堆结构信息。
图2-40 Pwndbg所展示的堆结构信息
除此之外,调试程序还存在一个问题:若程序开启了PIE动态地址,即没有准确的断点地址,怎么办呢?此时我们就需要确定程序每次加载的段基地址。段基地址使用Pwntools工具设置断点较为方便,代码如下: