PWN工具之pwndbg

pwndbg是什么?

pwndbg是一个用于GDB的插件,旨在帮助进行漏洞利用和CTF挑战的动态调试工具。它提供了一系列的功能和命令,可以帮助我们更方便地进行动态调试。同时,pwndbg也是一个开源工具,可以在GitHub上找到并自由使用。

安装

pwndbg插件可以通过GitHub下载和安装。首先,需要将插件克隆到本地:

git clone https://github.com/pwndbg/pwndbg
 

然后,在GDB中加载pwndbg插件:

source /path/to/pwndbg/gdbinit.py

使用

pwndbg的使用方式与GDB类似,我们可以用它来进行动态调试

步骤如下:

1.编译

首先需要编译目标二进制文件,确保在编译时开启调试信息。例如,使用gcc编译:

gcc -g -o target target.c

2.启动pwndbg

在终端中输入以下命令启动pwndbg

gdb -q target

 这将启动GDB并自动加载pwndbg插件。接下来,附加到目标二进制文件:

attach $(pgrep target)

3.开始调试

现在可以开始使用pwndbg进行动态调试。以下是一些常用的命令:

  • break:
  • 设置断点。
  • run:
  • 启动程序。
  • continue:
  • 继续执行程序。
  • next:
  • 单步执行程序,跳过函数调用。
  • step:
  • 单步执行程序,进入函数调用。
  • backtrace:
  • 显示函数调用栈。
  • info:
  • 显示程序信息,例如变量值、寄存器值、内存地址等。
  • x:
  • 显示内存中的内容。
  • set:
  • 设置变量的值。

(偷偷说一下在GDB中绝大多数指令输入首字母即可就比如:设置断点break可以写成b);

以下是一个示例:

b main
Breakpoint 1 at 0x400516
r
Starting program: /path/to/target
Breakpoint 1, 0x0000000000400516 in main ()
next
x/16x $rsp
0x7fffffffe438: 0x00007fffffffe558  0x0000000000400547
0x7fffffffe448: 0x0000000000000000  0x00007fffffffe4f8
0x7fffffffe458: 0x00007fffffffe4f8  0x0000000000400400
0x7fffffffe468: 0x00007ffff7a0c830  0x00007fffffffe540
0x7fffffffe478: 0x0000000000400526  0x0000000000000000
0x7fffffffe488: 0x0000000000000000  0x0000000000400400
0x7fffffffe498: 0x00000000004004c0  0x00007ffff7dd90b3
0x7fffffffe4a8: 0x0000000000000001  0x00007fffffffe540
set $rax = 0xdeadbeef
continue

以上示例中,我们设置了一个断点并启动程序,使用next命令单步执行程序,然后使用x命令查看堆栈内容,使用set命令设置寄存器值,最后使用continue命令继续执行程序。

以下是一些其他的命令:

  • context:
  • 显示当前上下文信息,包括寄存器值、堆栈信息和内存映射等。
  • heap:
  • 显示堆信息,包括堆块的大小、地址和状态等。
  • telescope:
  • 显示一段内存区域的内容。
  • ropgadget
  •  显示二进制文件中可用的ROP gadget。
  • search:
  • 在内存中搜索指定的字符串或模式。
  • asm:
  • 将汇编指令转换成机器码。
  • breakpoints:
  • 显示断点信息。
  • vmmap:
  • 显示进程的虚拟内存映射。
  • pattern:
  • 生成用于缓冲区溢出的模式字符串。

Ok啊,差不多就总结这么多。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值