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、汇编语言、计算机体系架构,真正深入底层去了解程序在计算机上运行的原理,这样才能真正的成为高手。


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

相关文章
|
4月前
|
NoSQL Ubuntu Linux
CTF-Pwn 入门:环境搭建
CTF-Pwn 入门:环境搭建
|
4月前
|
Oracle Java 关系型数据库
JLink 使用教程:从入门到精通
本文提供了JLink工具的使用教程,包括入门、进阶和高级篇,涉及创建运行时镜像、添加模块、自定义启动器、压缩镜像、自定义运行时参数和配置文件等内容,旨在帮助用户创建独立的Java应用程序运行时环境。
435 0
|
9月前
|
存储 Linux Shell
Linux常用命令:从入门到精通
# Linux常用命令入门到精通概览 本文引导读者逐步学习Linux核心命令,提升在Linux环境中的效率和技能。涵盖基础命令如ls、cd、pwd、mkdir等,文本处理命令如cat、grep、sort,权限管理及进程、网络管理命令,还有高级命令、Shell脚本编程基础和实用技巧。通过学习和实践,助你成为Linux命令高手。
50 0
|
9月前
|
Go C++ Docker
Gopher进阶神器:拥抱刻意练习,从新手到大师。
Gopher进阶神器:拥抱刻意练习,从新手到大师。
Gopher进阶神器:拥抱刻意练习,从新手到大师。
|
传感器 网络协议 物联网
搞嵌入式开发却不会写上位机?来了解下小白的福音Micro-Lab(多个案例带你快速入门)
搞嵌入式开发却不会写上位机?来了解下小白的福音Micro-Lab(多个案例带你快速入门)
236 0
|
安全 PHP 开发工具
CTF入门学习笔记
CTF入门学习笔记
151 0
|
存储 SQL 自然语言处理
计算机基础必读书籍
计算机基础必读书籍
114 0
|
前端开发
《2020前端工程师必读手册》下载
阿里巴巴前端委员会推荐!覆盖5大热点前端技术方向、10+核心实战的前端手册--《2020前端工程师必读手册》已经正式上线了,语言框架/智能化/微前端/Server tess/工程化5大方向实战解读,解锁前端新方式,挖掘前端新思路。
101 3
《2020前端工程师必读手册》下载
|
Linux
Linux驱动开发入门
Linux驱动开发入门
178 0
|
前端开发
《2020前端工程师必读手册》电子版
阿里巴巴前端委员会推荐!覆盖5大热点前端技术方向、10+核心实战的前端手册--《2020前端工程师必读手册》已经正式上线了,语言框架/智能化/微前端/Server tess/工程化5大方向实战解读,解锁前端新方式,挖掘前端新思路。
97 0
《2020前端工程师必读手册》电子版