Skip to content

AvavaAYA/ustc-pwn-tutorial

Repository files navigation

PWN

pwn 引申自单词 own,在本门课程中特指“二进制漏洞利用”。

Tip

主流的 pwn 题一般符合这样的模型:

  • 一个含有漏洞的二进制程序,运行在一台出题者提供的远程服务器上,解题者通过远程连接,和服务器上的这个程序收发数据(这种数据一般常常标准输入输出来进行交互,例如常用的 printf 等等)。解题者通过发送一些构造好的数据,触发服务器上的漏洞,在服务器上执jj行恶意代码,获得 flag 信息。

同时,出题者一般会提供这个二进制程序(有些题目中会提供代码),供解题者在本地进行静态漏洞分析和动态调试。

因此,pwn 题的大体思想是,在本地分析程序漏洞,并去分析和攻击远程的动态运行环境。所以最基础的一步是在本地进行静态分析。

实际上 pwn 的过程就是攻击者扩大对程序控制范围的过程:先通过诸如 fuzz 或静态分析等手段找到程序漏洞所在,阅读源码或逆向思考可能的利用方式,接着控制用户输入触发漏洞来控制程序的内存布局,再借助精巧的布置绕过层层保护以获得程序执行流程的控制权,最终实现任意代码执行或泄露敏感文件等目标。

上面的利用思路并不局限与课程或比赛题目中,现实世界中的二进制漏洞发现及利用也是类似的过程。

现在无论是 CTF 比赛中还是现实场景下,pwn 所涵盖的知识范围都非常广泛,也很难在一两节课的时间内速成,这份教材旨在给初学者构建一个更清晰友善的学习框架,同时也会结合一些进阶的内容供感兴趣的同学研究。


目录

  1. [[准备工作]]
  2. [[基础 ROP]]
  3. [[格式化字符串]]
  4. [[堆]]
  5. [[Linux 内核]]
  6. [[浏览器引擎]]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published