PWN学习路线

入门准备

  1. 选择一款基于linux的操作系统,入门建议使用ubuntu
  2. 学习和使用基础的linux命令
  3. 学习和使用基础的工具:vim, git, ssh, tmux等
  4. 安装和使用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:写代码和脚本

入门

整数溢出

栈溢出

格式化字符串漏洞

中阶

堆漏洞(ptmalloc)

建议阅读libc-2.23, libc-2.27, libc-2.31和libc-2.35的源码,然后根据不同版本的保护再去细分阅读源码

可以先大概阅读源码后再学习漏洞,根据漏洞再去细读,但不建议直接学习漏洞

IO_FILE

高阶

kernel

内核安全

vmpwn

虚拟机pwn

window pwn

windows pwn

Iot

物联网安全