Pwn 课程第八节: GDB、Pwntools 和 Exploit 调试

1. 调试工具介绍

在 Pwn 挑战中,调试工具是分析二进制程序的关键。常见的调试工具包括:

  1. GDB(GNU Debugger):调试二进制程序,分析寄存器、堆栈等。

  2. Pwntools:一个 Python 库,帮助构造 Exploit。

  3. GEF / PEDA / Pwngdb:GDB 的插件,增强调试功能。

2. GDB 基础命令

2.1 运行程序

gdb ./vuln
(gdb) run "AAAA"

2.2 设置断点

(gdb) break *0x080484f6  # 在特定地址设置断点
(gdb) break main          # 在 main 函数设置断点

2.3 查看寄存器

(gdb) info registers

2.4 查看内存

(gdb) x/20xw $esp  # 查看 ESP 地址的 20 个字

2.5 单步执行

(gdb) stepi  # 单步执行一条汇编指令
(gdb) next   # 执行下一行 C 代码

3. 使用 GEF / PEDA / Pwngdb 增强 GDB

3.1 安装 GEF

git clone https://github.com/hugsy/gef.git ~/.gef
echo "source ~/.gef/gef.py" >> ~/.gdbinit

3.2 安装 PEDA

git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit

3.3 启用 GDB 插件

gdb -q ./vuln

4. 使用 Pwntools 进行 Exploit 编写

Pwntools 是专门为 Pwn 设计的 Python 库,可以方便地与程序交互。

4.1 安装 Pwntools

pip3 install pwntools

4.2 基本用法

from pwn import *
​
p = process("./vuln")
p.sendline(b"A" * 64)
print(p.recv())
p.interactive()

4.3 远程 Exploit

p = remote("chall.pwnable.xyz", 1337)
p.sendline(b"A" * 64)
print(p.recv())
p.interactive()

5. 练习题

  1. 使用 GDB 调试 vuln 程序,找到 EIP 覆盖点。

  2. 安装 GEF / PEDA / Pwngdb,熟悉其功能。

  3. 使用 Pwntools 编写一个 Exploit,对本地程序进行交互。

  4. 连接远程服务,尝试发送 Payload。

6. 总结

  • 了解 GDB 的基础调试命令。

  • 学会安装 GEF、PEDA、Pwngdb 来增强调试功能。

  • 使用 Pwntools 编写 Exploit 进行自动化利用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值