简介
简介¶
PWN这个方向对于个人知识体系的要求非常苛刻,学习起来也非常有难度。
但是相对应的,你的收获也会很大(即使你半途而废,因为这个方向几乎会用到计算机领域的所有知识)
学习PWN的前置条件¶
- 一定要会C语言和Python!
所有的反汇编反编译工具最后生成的结果都是C语言程序,而且大部分的题目也都是以C语言进行编写的。
这个赛道最常用的工具pwntools是基于Python的扩展库,所以如果不会Python,也就没有办法使用这个工具,会对选手解题造成极大的挑战。(遇到非简单题基本没法解......)
- 对计算机程序的运行生命周期有着一定的了解
否则栈、堆、地址、指针什么的概念不了解,那么基本没办法学......
- 对hackergame和PWN有着极高的热情和兴趣
这个是最重要的,PWN这条路注定是困难且孤独的,在打出成绩之前你收获不到任何的喝彩,因为没有人能看懂你究竟写了多牛的攻击链、打出了多精彩的保护绕过,没有热情很容易半途而废
- 有充足的时间够你挥霍
PWN的学习之路注定漫长,如果你不能拿出来3个月及以上的学习时间,那很难在这条路上走到不错的位置
PWN的前期学习路径¶
- (可选)学会“调教”AI老师
在前中期的学习中,AI几乎能够解答你的所有问题,没有什么是一个全天候一对一老师对你学习PWN帮助更大的了(前提是你能很清楚的描述问题的背景、内容、以及需求)
- 如果你仍然对于C语言不够熟悉,那么先深入学习C语言
- 充分了解变量、函数调用、地址和指针、各类基本库函数 以及 程序流和堆栈机制
这将为你之后读懂汇编代码奠定基础
- 学习虚拟机安装以及linux基本语法
- cd,ls,cat,vim,apt......
这将是你遇到的第一个门槛......
几乎所有的PWN题都基于Linux运行
- 学习一些危险函数存在的漏洞和针对它们的攻击手段
恭喜你成功打开了潘多拉的魔盒,进入了PWN的世界~
- 从
ret2text
开始学习栈溢出
的利用手段- 你需要学会使用
gdb
以及pwndbg
插件、python
的pwntools
库、IDA Pro
等PWN工具 - 现在你可以去
NSSCTF
、Bugku
等靶场平台开始搜罗对应类型的题目刷题
- 你需要学会使用
这会是你的第一个漏洞利用手段,你正式成为了一名PWN手!
相信我,你很快就会有所收获~
- 从
write
函数开始学习如何利用Leak
漏洞获取想要的攻击资源- 学习
PIE保护
、Canary保护
等安全防护机制 - 学习
PIE绕过
技术、Canary绕过
技术 - 学习
ret2libc
的利用手段 - (可选)学习
ret2shellcode
的利用手段
- 学习
在这里你将会第一次直面防护人员的抵抗
请做好准备击碎他们的防御~
ret2shellcode由于直接考察的题目比较少,因此作为可选项