PWN二进制漏洞学习指南
PWN二进制漏洞学习指南
前言
最近准备学PWN,所以买了《CTF权威指南(PWN)篇》的书粗略的看完后,在这里做个学PWN需要掌握的知识指南,如有补充欢迎评论。
前置技能
首先我觉得要学习PWN还是要有一定基础的,因为PWN毕竟是和系统底层知识打交道,所以我觉得应该具备如下的一些技能,并且我推荐了一些不错的书籍。
- Linux系统基础知识《鸟哥Linux私房菜》、《Linux就该这么学》、《Linux命令大全》
- Linux下C语言编程 《Linux C编程一站式学习》
- Python编程基础知识 《Python编程:从入门到实践》
- 汇编语言《汇编语言(第4版)》、 王爽8086汇编学习笔记
- 熟悉ELF文件格式 《Linux二进制分析 》
- 熟悉GDB动态调试 gdb调试常用指令
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平台有:BUUCTF、pwnable.tw、攻防世界、NSSCTF、pwnable.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二进制漏洞学习指南的更多相关文章
- PWN——uaf漏洞学习
PWN--uaf漏洞 1.uaf漏洞原理 在C语言中,我们通过malloc族函数进行堆块的分配,用free()函数进行堆块的释放.在释放堆块的过程中,如果没有将释放的堆块置空,这时候,就有可能出现us ...
- [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇
目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...
- 《CWNA官方学习指南(第3版):认证无线网络管理员PW0-105》
<CWNA官方学习指南(第3版):认证无线网络管理员PW0-105> 基本信息 原书名:CWNA: Certified Wireless Network Administrator Off ...
- [二进制漏洞]栈(Stack)溢出漏洞 Linux篇
目录 [二进制漏洞]栈(Stack)溢出漏洞 Linux篇 前言 堆栈 堆栈(Stack)概念 堆栈数据存储方式 函数调用 函数调用C语言代码 函数调用过程GDB调试 函数Call返回原理 函数栈帧 ...
- [pwn基础]Pwntools学习
目录 [pwn基础]Pwntools学习 Pwntools介绍 Pwntools安装 Pwntools常用模块和函数 pwnlib.tubes模块学习 tubes.process pwnlib.con ...
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
- 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性
2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!
可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...
随机推荐
- 如何实现Orchard Core CMS的全文索引
Orchard Core提供了Lucene功能,允许您在网站上进行全文搜索.大多数情况下,在运行博客或简单的代理网站时,您可能需要在页面内容中进行搜索.在Orchard Core中,您可以使用Liqu ...
- javascript 对象池
* 一个对象池的简单应用 tool tip tootip.html <html> <head> <meta charset="UTF-8"> & ...
- 计算机python二级 第六套
第一模块 基本操作 1. random.seed(100) 随机种子 就是100 2.import random 3.https://www.runoob.com/python3/pytho ...
- 5 大场景深度探讨何为 Serverless 架构模式?
作者 | Hongqi 阿里云高级技术专家 究竟什么是 Serverless 架构? 什么是 Serverless 架构?按照 CNCF 对 Serverless 计算的定义,Serverless 架 ...
- VS Code环境配置
1.语言配置 2.Node.js安装配置 系统变量中NODE_PATH,变量值为nodejs的安装路径. 用户变量Path包含%NODE_PATH% 如果说通过CMD打开的命令行可以执行node -v ...
- 题解「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set
题目传送门 题目大意 给出一个长度为 \(n\) 的数组,选出一些数异或之和为 \(s1\),其余数异或之和为 \(s2\),求 \(s1+s2\) 最大时 \(s1\) 的最小值. 思路 你发现如果 ...
- 洛谷5024 保卫王国 (动态dp)
qwq非正解. 但是能跑过. 1e5 log方还是很稳的啊 首先,考虑最普通的\(dp\) 令\(dp1[x][0]表示不选这个点,dp1[x][1]表示选这个点的最大最小花费\) 那么 \(dp1[ ...
- 洛谷4631 [APIO2018] Circle selection 选圆圈 (KD树)
qwq纪念AC450 一开始想这个题想复杂了. 首先,正解的做法是比较麻烦的. qwqq 那么就不如来一点暴力的东西,看到平面上点的距离的题,不难想到\(KD-Tree\) 我们用类似平面最近点对那个 ...
- 洛谷4719 【模板】动态dp 学习笔记(ddp 动态dp)
qwq大概是混乱的一个题. 首先,还是从一个比较基础的想法开始想起. 如果每次暴力修改的话,那么每次就可以暴力树形dp 令\(dp[x][0/1]\)表示\(x\)的子树中,是否选择\(x\)这个点的 ...
- 洛谷5038 [SCOI2012]奇怪的游戏(二分+网络流+判断奇偶)
寒假的时候就听过这个题.但是一直没有写. qwq 首先,我们发现题目中的图是个网格图,然后每次可以将相邻两个格子加一. 很容易就想到是黑白染色.那么每次操作,就相当于同时操作一个白点,一个黑点. 我们 ...