跳转至

简介

简介

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插件、pythonpwntools库、IDA Pro等PWN工具
    • 现在你可以去NSSCTFBugku等靶场平台开始搜罗对应类型的题目刷题

这会是你的第一个漏洞利用手段,你正式成为了一名PWN手!

相信我,你很快就会有所收获~

  • write函数开始学习如何利用Leak漏洞获取想要的攻击资源
    • 学习PIE保护Canary保护等安全防护机制
    • 学习PIE绕过技术、Canary绕过技术
    • 学习ret2libc的利用手段
    • (可选)学习ret2shellcode的利用手段

在这里你将会第一次直面防护人员的抵抗

请做好准备击碎他们的防御~

ret2shellcode由于直接考察的题目比较少,因此作为可选项

此部分的贡献者