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:一款可以自动创建带有配乐及字幕的短视频工具!
724 1
|
存储 前端开发 API
基于SpringBoot+Vue的智能在线考试系统的设计与实现
基于SpringBoot+Vue的智能在线考试系统的设计与实现
4261 0
|
12月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
12月前
|
SQL JSON 安全
Java 8 + 中 Lambda 表达式与 Stream API 的应用解析
摘要:本文介绍了Java 8+核心新特性,包括Lambda表达式与Stream API的集合操作(如过滤统计)、函数式接口的自定义实现、Optional类的空值安全处理、接口默认方法与静态方法的扩展能力,以及Java 9模块化系统的组件管理。每个特性均配有典型应用场景和代码示例,如使用Stream统计字符串长度、Optional处理Map取值、模块化项目的依赖声明等,帮助开发者掌握现代Java的高效编程范式。(150字)
264 1
|
11月前
|
机器学习/深度学习 人工智能 监控
突破传统监控瓶颈:AI驱动的高精度路口违规实时识别系统
本系统融合计算机视觉与深度学习,构建全栈式AI智能交通感知与决策平台,实现路口高危行为毫秒级识别与响应,显著降低交通事故率,提升执法效率与道路安全水平。
754 0
|
人工智能 运维 安全
热门 MCP Server一键部署
本文探讨了MCP(Model Context Protocol)的发展及其云上托管的趋势。尽管MCP协议在2024年发布时未引起广泛关注,但随着Cursor和Manus等平台的集成,以及OpenAI对其Agent SDK的支持,MCP逐渐成为行业标准。然而,本地部署的MCP Server存在效率低、扩展复杂等问题,难以满足企业级需求。函数计算(FC)作为Serverless算力的代表,提供一键托管开源MCP Server的能力,具备成本效益、弹性扩展、简化运维等优势,解决了传统托管的核心痛点。文章还提供了多个开源MCP Server的一键部署链接,助力开发者快速上手。
热门 MCP Server一键部署
|
人工智能 语音技术 iOS开发
25.9K star!AI一键生成高清短视频,这个开源神器让内容创作起飞!
"MoneyPrinterTurbo 是基于AI大模型的全自动短视频生成工具,只需输入主题,3分钟即可生成包含智能脚本、AI配音、专业字幕和流畅画面的高清视频
833 1
|
边缘计算 运维 安全
服务化架构 (SBA) 在 5G 核心网中的关键作用
服务化架构 (SBA) 在 5G 核心网中的关键作用
1222 1
|
Python
python使用smtp发送邮件
python使用smtp发送邮件
352 0
|
网络协议
CTF流量分析
CTF流量分析
449 0