PWN入门必读

简介: PWN入门必读

PWN:

CTF中的pwn指的是通过通过程序本身的漏洞,编写利用脚本破解程序拿到主机的权限,这就需要对程序进行分析,了解操作系统的特性和相关漏洞,是难度较大的分支。Pwn是CTF方向中的一种,主要是利用二进制漏洞从而获得getShell(提权),即获得对方系统权限,从而控制对方电脑。


名词储备:


Pwn是一个黑客语法的俚语词,自"own"这个字引申出来的,这个词的含意在于,玩家在整个游戏对战中处在胜利的优势,或是说明竞争对手处在完全惨败的 情形下,这个词习惯上在网络游戏文化主要用于嘲笑竞争对手在整个游戏对战中已经完全被击败(例如:“You just got pwned!”)。


writeup(指CTF中记录解题思路过程的文档)


exp(exploit,指漏洞利用程序)


shellcode 包含在恶意数据中的机器码(机器码在攻击时拿到shell)


shell:"shell"通常指的是一个交互式的命令行界面,可以用于执行系统命令和操作。可以说,拿到了shell,你就是服务器的拥有者。自然而然就可以光明正大的查找这台服务器上的flag


payload (利用漏洞时构造的恶意数据,攻击者可以利用程序中的漏洞来执行任意的代码或获取系统权限。)


**调试:**程序调试是指通过分析和排查程序中的错误和问题,以找出程序运行过程中的错误和异常,并进行修复和优化的过程。调试是软件开发过程中非常重要的一环,可以帮助开发人员快速定位和解决程序中的问题,提高程序的质量和稳定性。


栈,汇编,Linux等


0x01 基础知识准备

pwn相对于web,更需要专业的技能和知识,最主要的是要学会如何分析程序,这就需要有足够的准备


C语言是最基础的,当下的比赛大部分的pwn题目使用的程序都是利用C语言或者C++完成的,IDA的反编译功能也是变成C/C++,理解并能运用C语言,对于分析程序有很大的帮助。


汇编语言,pwn是绕不过汇编的,分析程序首先面对的就是汇编,对于汇编需要有一定的基础,按照当下来说,使用的最多的是x86的汇编,然后就是IA32,掌握这两种汇编基本上就足够了。


操作系统的知识也需要有一定的了解,特别是linux系统和各种系统命令,栈和堆以及一些操作系统特性造成的漏洞都是我们解题的思路。


python2.3语法,库的运用,exp每种语言都可以写,但是python集成了一个专门用于pwn的库–pwntools,更方便使用。python3增加了一个bytes类型,导致p64()结果不能直接与str类型相加,其中有很多不可见字符,推荐使用Python2,python2中bytes的值以str形式存储可以直接与str相加。


源/伪代码阅读和BUG漏洞寻找能力


0x02 主流工具的使用

分析pwn会用到许多的工具,掌握并使用这些工具也是十分重要的。


python 2.X 3.X


ROPgadget rop指令流搜索


gdb linux下的调试程序,同样作用很大。


ollydbg 动态分析使用,分析程序的流程。


IDA pro 一个逆向分析工具,静态分析神器,必备。


pwntools python第三方库,用于开发exp和利用漏洞https://docs.pwntools.com/en/latest/intro.html


windbg windows下的动态分析神器,可以调试内核态,谨慎使用。


Libcsearcher 集成libc查找工具https://github.com/lieanu/LibcSearcher


one_gadget 一句话提权指令搜索工具https://github.com/david942j/one_gadget


pwndbg gdb调试的一个插件,可以显示一些调试信息很有用。https://gitcode.com/pwndbg/pwndbg?utm_source=csdn_github_accelerator&isLogin=1


上面列举的工具对于pwn来说都有很大的作用,刚开始学习的建议从IDA和gdb开始。


0x03 经典漏洞学习

pwn的几大主流漏洞一定要掌握,深层掌握,后续的题目基本上是这 些漏洞的深化和结合。


ROP


栈溢出


堆溢出


格式化字符串漏洞


其余漏洞


前四种漏洞是大部分程序都存在,且很难避免的,是必须掌握的内容。


0x04 Shellcode编码

Shellcode是破解软件的一种方法,对于一些没有办法通过程序内部函数获取系统权限的软件,可以编写Shellcode来获取系统权限。


0x05 学习资料总结

书籍推荐:


汇编语言第三版


鸟哥的linux私房菜


深入理解计算机系统


黑客攻防技术宝典(系统实战篇) 一本老书,但是很经典。


IDA pro权威指南 IDA学习的书籍


黑客反汇编解密 关于反汇编和分析软件的知识


加密与解密 windows平台的逆向分析


学习网站推荐:


看雪论坛 https://bbs.pediy.com


学破解论坛 https://www.xuepojie.com


吾爱破解 https://www.52pojie.cn


i春秋 https://www.ichunqiu.com


实验吧 http://www.shiyanbar.com


漏洞银行 https://www.bugbank.cn/live


ctf刷题网站推荐


实验吧 http://www.shiyanbar.com


i春秋 https://www.ichunqiu.com


bugkuctf https://ctf.bugku.com


攻防世界 https://adworld.xctf.org.cn


pwnable http://www.pwnable.kr/


buuctfhttps://buuoj.cn/


NSSCTFhttps://www.nssctf.cn/index


ctfshowhttps://ctf.show/


写在最后


在学习的过程中承受痛苦和咬牙坚持是必然的,要主动去理解原理,以自己的解题思路和思考角度。学习不是完成任务,打好原理基础,认真学习编译原理、ics、汇编语言、计算机体系架构,真正深入底层去了解程序在计算机上运行的原理,这样才能真正的成为高手。


学习知识就像摘果子,伸出手,一个一个摘,慢慢就摘满一箩筐了

相关文章
|
9月前
|
安全 PHP 开发工具
CTF入门学习笔记
CTF入门学习笔记
|
10月前
|
存储 SQL 自然语言处理
计算机基础必读书籍
计算机基础必读书籍
75 0
|
运维 搜索推荐 安全
第一章 学前必读
第一章 学前必读
|
安全 NoSQL 机器人
准网安研究生の服务器初体验
小菜鸡第一次使用云服务器的体验
|
设计模式 程序员 测试技术
|
机器学习/深度学习 供应链 算法
|
开发者 人工智能
那些年,人们问王坚博士的33个问题 | 开发者必读(108期)
11月22日,中国工程院公布2019院士增选结果,阿里巴巴技术委员会主席王坚当选院士。回顾过去10年,王坚主持研发了中国唯一自研的云操作系统——飞天,突破世界级技术难题,实现中国云计算从0到1的突破。王坚是如何看待中国技术的?他对于技术创新和布局又有什么样的思考?开发者社区整理了这十年间关于王坚博士的经典采访Q&A,为你揭晓他作为一名顶尖技术人的思考。
3104 0
|
Java 程序员 数据处理
在美做开发多年,写给国内iPhone开发新手
  从这个论坛开始办这个板块就几乎没正面回复过什么,但平心而论,看的最多的板块也是这个。但从没有发表过自己的看法,因为任何一个人在今时今日都可以成为一个程序员。而在看了很多国内的程序大小论坛后,养成了一个习惯,不敢在论坛里做正面的回复,甚至不回复,乃至连文章也不写。
931 0