PWN二进制漏洞学习指南

前言

最近准备学PWN,所以买了《CTF权威指南(PWN)篇》的书粗略的看完后,在这里做个学PWN需要掌握的知识指南,如有补充欢迎评论。

前置技能

首先我觉得要学习PWN还是要有一定基础的,因为PWN毕竟是和系统底层知识打交道,所以我觉得应该具备如下的一些技能,并且我推荐了一些不错的书籍。

PWN概念

概述

PWN我觉得最开始的时候应该是没有这门学科和系统化的资料教程的,PWN本身属于高阶技能,个人感觉都是以前那些逆向大佬、编程大佬开始玩点高级的东西,然后就开始挖漏洞,结果就挖出了各种二进制漏洞,并且把二进制漏洞也完美的利用起来了,后面就归纳总结出一套体系供后人学习,在此真的膜拜那些前辈的共享精神。

发音

至于PWN为什么叫PWN呢?是什么单词的缩写吗?其实只是一种声音,pwn!你的电脑爆炸了,你的电脑被攻破了,因为用二进制漏洞挖掘与利用这词来形容pwn未免也太长了,所以就用了简洁的叫法。

术语

这里介绍一些简单的PWN术语

  • Exploit(exp) 用于攻击的脚本与方案
  • Payload 攻击载荷,是对目标进程劫持控制流的数据
  • Shellcode 调用攻击目标的shell的代码

PWN环境搭建

学习PWN知识我们先需要一个指定的环境来进行PWN,这里首选的操作系统为Ubuntu、Kali然后安装必要的PWN环境软件来进行搭建,当然如果你想省力气的话也可以用docker直接部署别人封装好的pwn环境。

推荐教程链接:PWN虚拟机配置-yichen知识库PWN环境配置-星盟安全PWN入门教程-环境配置pwndocker

PWN知识学习途径

个人觉得PWN知识的话需要掌握常见漏洞安全机制PWN技巧

常见漏洞

  • 整数安全
  • 格式化字符串
  • 栈溢出与ROP
  • 堆利用

安全机制

  • Stack Canaries 栈保护
  • No-eXecute
  • ALSR 和 PIE
  • FORTIFY_SOURCE
  • RELRO

PWN技巧

  • One-gadget
  • 通用dadget及Return-to-csu
  • 劫持hook函数
  • 利用DynELF泄露函数地址
  • SSP Leak
  • 利用environ泄露栈地址
  • 利用_IO_FILE结构
  • 利用vsyscall

推荐的学习资料有《CTF竞赛权威指南(PWN篇)》星盟安全 PWN系列教程Linux Pwn入门教程yichen的信安知识库 二进制安全CTF中PWN知识点整理CTF-PWN资料与资源Nightmare 二进制课程。然后最好是跟着视频或者书籍再找一个在线的CTF网站练习,因为只有练习多了后才能熟能生巧,才能加深各种知识的理解。

推荐的CTF平台有:BUUCTFpwnable.tw攻防世界NSSCTFpwnable.kr

PWN相关资源博客

这些是我随便收集的排名不分先后,方便知识获取与整理。

https://bestwing.me/ Swing'Blog 浮生若梦

https://www.jarvisw.com/ 人称汪神 白帽子、全栈、IoT安全专家、嵌入式系统专家

http://whereisk0shl.top/ K0sh1: 就职于 360 vulcan Team ,擅长windows 漏洞挖掘与利用

https://o0xmuhe.github.io/ 三叶草Pwn选手,多个Adobe CVE编号拥有者

https://changochen.github.io/about.html Pwn神,目前在美国求学,专研学术

https://www.cnblogs.com/Ox9A82/ 三叶草Pwn选手,玄武实验室就职,方向是Windows和浏览器

https://f1r.github.io/ r2kapig 成员,二进制选手

https://gloxec.github.io/ Hook iOS && Pwn选手,目前就职360

http://riusksk.me/ 泉哥,《漏洞战争》作者

https://firmianay.github.io/ Firmy Yang 《CTF权威指南(Pwn)篇》作者

https://roderickchan.github.io/ 群里某位二进制大佬博客

http://47.101.67.103/tags/pwn/ eeeeeeeeeeeeeeeea

https://zhouyetao.github.io 星盟团队创始人之一

https://eur1ka.github.io/ eur1ka ,群内Pwn大佬 已刷几百pwn题,目前研究IoT

https://vxer-lee.github.io/ 我,一个渣渣会点re,正在学pwn

Pwn菜鸡小分队

可以加群一起学习pwn技术,群内有pwn大佬(不是我),互相交流才能进步,群内也可分享re和web技术。

PWN二进制漏洞学习指南的更多相关文章

  1. PWN——uaf漏洞学习

    PWN--uaf漏洞 1.uaf漏洞原理 在C语言中,我们通过malloc族函数进行堆块的分配,用free()函数进行堆块的释放.在释放堆块的过程中,如果没有将释放的堆块置空,这时候,就有可能出现us ...

  2. [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇

    目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...

  3. 《CWNA官方学习指南(第3版):认证无线网络管理员PW0-105》

    <CWNA官方学习指南(第3版):认证无线网络管理员PW0-105> 基本信息 原书名:CWNA: Certified Wireless Network Administrator Off ...

  4. [二进制漏洞]栈(Stack)溢出漏洞 Linux篇

    目录 [二进制漏洞]栈(Stack)溢出漏洞 Linux篇 前言 堆栈 堆栈(Stack)概念 堆栈数据存储方式 函数调用 函数调用C语言代码 函数调用过程GDB调试 函数Call返回原理 函数栈帧 ...

  5. [pwn基础]Pwntools学习

    目录 [pwn基础]Pwntools学习 Pwntools介绍 Pwntools安装 Pwntools常用模块和函数 pwnlib.tubes模块学习 tubes.process pwnlib.con ...

  6. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  7. 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性

    2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...

  8. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  9. [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...

随机推荐

  1. Django学习day06随堂笔记

    每日测验 """ 今日考题 1.什么是FBV与CBV,能不能试着解释一下CBV的运作原理 2.模版语法的传值需要注意什么,常见过滤器及标签有哪些 3.自定义过滤器,标签, ...

  2. TP6出现错误 No input file specified.

    解决办法是打开public下的.htaccess文件, 把:RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 改为:RewriteRule ^(.*)$ index ...

  3. Java基础系列(39)- 二维数组

    多维数组 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组. 二维数组 int a[][]=new int[2][5]; 解析:以上二维数组a可以看成一个 ...

  4. 再谈OAuth授权

    工作场景流程 大家都知道OAuth是用于第三方授权的,当你用其他的APP想访问微信账号的昵称.粉丝.联系人等信息,这里就需要微信进行授权,此时在APP的网页端是可以发现有微信登录的,点开会出现弹框,在 ...

  5. Python Type Hints(类型提示)

    在做自动化测试的时候,改进测试框架,类型提示会让你写代码时更加流程,当你在一个模块定义了类型,而其他模块没有提示的时候,是相当不方便.

  6. 不使用插件的ajax 上传文件

    参考博主资料 我没试  我使用了带js的插件的方式 https://www.cnblogs.com/pegasus827/p/10941775.html 第一步:html   form表单代码 第二步 ...

  7. jmeter加密解密(解密篇)

    上一篇已经讲解了公钥加密,这篇讲解公钥解密.解密比较简单,直接操作吧. 需求是:接口中的请求体的部分参数需要先加密再请求,返回的结果中部分字段需解密. 1.在请求下新建beanshell后置处理程序, ...

  8. P1758-[NOI2009]管道取珠【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P1758 题目大意 给出一个大小为\(n\)和一个大小为\(m\)的栈,每次选择一个栈弹出栈顶然后记录这个字母,求所 ...

  9. P4249-[WC2007]剪刀石头布【费用流】

    正题 题目链接:https://www.luogu.com.cn/problem/P4249 题目大意 \(n\)个点的竞赛图有的边已经确定了方向,要求给剩下的边确定一个方向使得图的三元环最多. \( ...

  10. Python列表操作常用API

    1.列表的概念 (1)列表的定义 列表是Python中一种基本的数据结构.列表存储的数据,我们称为元素.在列表中的每个元素都会有一个下标来与之对应,第一个索引是0,第二个索引是1,依此类推的整数. 列 ...