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


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

相关文章
|
人工智能 前端开发 API
开源一周即飙升7.9K Star!Money Printer:一款可以自动创建带有配乐及字幕的短视频工具!
开源一周即飙升7.9K Star!Money Printer:一款可以自动创建带有配乐及字幕的短视频工具!
653 1
|
NoSQL Ubuntu Linux
CTF-Pwn 入门:环境搭建
CTF-Pwn 入门:环境搭建
|
存储 编译器 程序员
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
在C语言中,内存布局是程序运行时非常重要的概念。内存布局直接影响程序的性能、稳定性和安全性。理解C程序的内存布局,有助于编写更高效和可靠的代码。本文将详细介绍C程序的内存布局,包括代码段、数据段、堆、栈等部分,并提供相关的示例和应用。
725 5
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
|
算法 安全 物联网
全面了解AES加密:入门指南(二)
全面了解AES加密:入门指南
|
算法 数据安全/隐私保护
CTF — MP3文件隐写
CTF — MP3文件隐写
701 0
|
Java Linux 数据安全/隐私保护
CTF — 图像隐写三板斧
CTF — 图像隐写三板斧
3683 1
|
开发框架 监控 Kubernetes
CTF本地靶场搭建——GZ:CTF基础使用
GZ::CTF是一个基于ASP.NET Core的开源CTF竞赛平台,支持Docker或K8s容器部署,提供静态和动态题目类型,包括静态附件、动态附件、静态容器和动态容器,具备动态分值功能,如三血奖励和动态flag作弊检测。平台还具有实时通知、邮件验证、用户权限管理、Writeup收集、流量代理转发等功能。此外,它包含比赛管理、队伍管理、用户管理等多个管理模块,适合举办和参与网络安全竞赛。
|
JavaScript 前端开发 数据管理
React和Vue的优缺点
【10月更文挑战第23天】React和Vue的优缺点
499 0
|
数据安全/隐私保护
|
前端开发 rax Shell
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)(上)
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)
1192 0
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)(上)