PWN学习路线
入门准备
- 选择一款基于linux的操作系统,入门建议使用ubuntu
- 学习和使用基础的linux命令
- 学习和使用基础的工具:vim, git, ssh, tmux等
- 安装和使用pwn所需的工具
- IDA Pro:用于查看代码,我通常只用它查看伪代码,习惯使用gdb进行调试,推荐一个IDA Pro的插件:LazyIDA
- python:用于写攻击脚本
- pwntools:用于编写和调试的 Python 库
- LibcSearcher:查找和匹配 libc 库,建议使用libc-database更新libc库
- GDB:用于动态调试
- Pwngdb:gdb插件
- pwndbg:gdb插件(推荐)
- peda:gdb插件(和pwndbg,gef冲突,不能同时使用)
- gef:gdb插件(和pwndbg,peda冲突,不能同时使用)
- checksec:检查程序保护
- glibc-all-in-one/gglibc:下载libc库
- muslheap:用于调试musl heap
- patchelf:修改 ELF 文件的工具,可以更改动态链接库等
- ROPgadget:rop搜索工具
- ropper:elf搜索工具,也可以搜索rop,我相对更喜欢ropper
- tmux:终端复用工具,非常方便用于调试
- VScode:写代码和脚本
入门
整数溢出
栈溢出
- ret2text
- ret2shellcode
- ret2syscall
- ret2libc
- ret2csu
- BROP
- SROP
- ret2dlreslove
- 花式栈溢出
格式化字符串漏洞
中阶
堆漏洞(ptmalloc)
建议阅读libc-2.23, libc-2.27, libc-2.31和libc-2.35的源码,然后根据不同版本的保护再去细分阅读源码
可以先大概阅读源码后再学习漏洞,根据漏洞再去细读,但不建议直接学习漏洞
- Attack系列,例如fast bin Attack
- house系列,例如House of Pig
IO_FILE
高阶
kernel
内核安全
vmpwn
虚拟机pwn
window pwn
windows pwn
Iot
物联网安全