前置
1、 c 语言(只要求能看懂即可)、基本数据结构的逆向识别(数组、链表、结构体等)
2、 汇编(要求完整看完《汇编语言(王爽)》)
3、 Linux 常用命令掌握(gdb 调试命令是重点)、理解函数调用机制(32 位和 64 位的区别)、
理解内存分页机制(要求看完《程序员的自我修养》,重点理解 Linux 的动态加载机制即
GOT 表和 PLT 表的作用)
4、 配置做题环境(ubuntu16.04+pwntools+gdb 插件(peda 或者 pwndbg))
5、 不要学什么就买一本很厚的书看,例如 Linux 命令,你用到什么就百度查一下,不要一
上来就来一本《鸟哥 Linux》,那是给运维看的基本书籍,不是给你看的
6、 切记!切记!切记!所有内容都是边学 pwn 边加深前置的学习。
7、 学会科学上网
栈溢出
学习资料
1、 i 春秋论坛的 pwn 月刊系列
2、 ctf-wiki 的栈溢出部分(https://ctf-wiki.github.io/ctf-wiki/pwn/readme/)
3、 一步一步 ROP 系列(32 和 64 位)作为学习 ROP 时的额外补充
4、 需要理解栈溢出的保护机制
资料使用方法
1、 将 i 春秋的 pwn 月刊和 ctf-wiki 栈溢出部分结合起来看,所有例题必须复现
2、 当看到 ROP 时可以百度搜一下“蒸米的一步一步学 ROP”,分 32 位和 64 位系统的利用,
必须复现
3、 必须复现,所有题目必须复现,并且 gdb 在 exp 中断点动态调试
刷题网址
1、 pwnable.kr
2、 i 春秋月刊的配套练习题
3、 ctf-challenge 相关例题(都有配套 exp,看不懂再百度 or 谷歌)
4、 攻防世界(adworld.xctf.org.cn)
5、 jarvisoj(www.jarvisoj.com)
6、 pwnable.tw(偏难)
堆溢出
学习资料
1、 Linux 堆内存管理深度分析(上:https://www.freebuf.com/articles/system/104144.html
下:https://www.freebuf.com/articles/security-management/105285.html)
2、 how2heap 总结(上:https://www.anquanke.com/post/id/86808
下:https://www.anquanke.com/post/id/86809)
3、 ctf-wiki 堆溢出部分
4、 Dance in heap 系列(一:https://www.freebuf.com/articles/system/151372.html
二:https://www.freebuf.com/articles/system/151407.html
三:https://www.freebuf.com/articles/system/151428.html
四:https://www.freebuf.com/articles/system/151435.html)
刷题网址
1、 pwnable.kr
2、 攻防世界(adworld.xctf.org.cn)
3、 ctf-challenge 相关例题(都有配套 exp,看不懂再百度 or 谷歌)
4、 pwnable.tw(偏难)
5、 jarvisoj(www.jarvisoj.com)
格式化字符串漏洞
学习资料
1、 i 春秋 pwn 月刊
2、 ctf-wiki
刷题网址
同上
其他
学习内容
1、 ctf-wiki 的 IO_FILE 利用技术
2、 ctf-wiki 的 Linux Kernel 利用技术
3、 ctf-wiki 的 arm 平台下的漏洞利用(环境搭建+调试)
4、 ctf-wiki 剩余的部分,有余力可以试着复现
5、 以赛养赛,从比赛中学习新的姿势
刷题网址
同上+变成赛棍