1. 调试工具介绍
在 Pwn 挑战中,调试工具是分析二进制程序的关键。常见的调试工具包括:
-
GDB(GNU Debugger):调试二进制程序,分析寄存器、堆栈等。
-
Pwntools:一个 Python 库,帮助构造 Exploit。
-
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. 练习题
-
使用 GDB 调试
vuln
程序,找到EIP
覆盖点。 -
安装 GEF / PEDA / Pwngdb,熟悉其功能。
-
使用 Pwntools 编写一个 Exploit,对本地程序进行交互。
-
连接远程服务,尝试发送 Payload。
6. 总结
-
了解 GDB 的基础调试命令。
-
学会安装 GEF、PEDA、Pwngdb 来增强调试功能。
-
使用 Pwntools 编写 Exploit 进行自动化利用。