·END·
原文始发于微信公众号(ipasslab):带你推开PWN世界的大门
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
聚合网络安全,存储安全技术文章,融合安全最新讯息
CTF-PWN简介
CTF中的PWN指的是通过通过程序本身的漏洞,编写利用脚本破解程序拿到主机的权限的一类赛题。这就需要对程序进行分析,了解操作系统的特性和相关漏洞。
程序本身是有自己的执行流程A,通过程序漏洞执行到我们感兴趣的代码/函数
解题流程
◆一个ip地址和端口号
Example:
nc 106.75.2.53 60044
1.nc==>即netcat,一个小巧的网络工具(Linux中自带),用来建立TCP连接;
2.连接成功后,目标主机会运行题目文件,通过TCP连接进行交互;
◆一个二进制文件
即目标主机会运行的题目文件。
通常情况下,比赛时可以在二进制层面知道目标主机将会运行什么代码(通常没有源代码)
◆分析二进制文件,找到其中的漏洞
IDA Pro:目前工业界最先进的反汇编和反编译器(基本上也是唯一好用的反编译器)。
◆通过异常的输入,利用漏洞,执行目标代码
常见的套路是执行system(“/bin/sh”),获得交互shell,然后读取flag文件。
◆获取flag
flag一般在当前文件夹下
“cat flag”,打开flag文件(一般txt格式),获得flag(一串字符)后提交。
基础知识
◆C语言基础、汇编语言基础、函数调用时的栈帧变换
◆简单的逆向(reverse engineering)基础,通过二进制代码了解程序的功能
◆操作系统内核相关特性
◆了解简单的软件防护技术:
栈保护:Canary,堆栈不可执行:NX(No-eXecute)
地址随机化:PIE(position-independent executable或者叫ALSR(address space layout randomization)
◆常用的漏洞利用手法:
ROP(Return-Oriented Programming)技巧(还有JOP, ret2libc, GOT,Hook ……目标劫持控制流)
◆常见的漏洞类型:
栈的漏洞(overflow)、 堆的漏洞(UAF,double free)、格式化字符串漏洞、逻辑漏洞、整数溢出、条件竞争、侧信道....
必备工具
◇IDA Pro :反汇编及反编译,同时也是强大的调试器(不过Linux环境下调试文件略麻烦)
◇pwntools : 一个用来解题的Python库,处理payload方便
◇GDB:Linux下命令行界面的调试器,有一些好用的插件,比如peda、pwndbg、gef插件可以在GitHub上找到,开源,易安装
◇ROPgadget:用于查找gadget和生成ROP链
◇Vmware & Linux虚拟机:当前大部分赛题都是Linux下
学习路线
基础:
◇简单的栈溢出、格式化字符串入手
◇堆漏洞基本利用手法(glibc基本的内存管理方式)
◇堆漏洞高级利用手法(IO_file相关的house of系列等)
进阶:
Linux 内核
docker逃逸
Qemu/Vmware虚拟机逃逸
代码解释器
Windows可执行程序
网络协议服务程序如httpd
Windows内核
异架构Arm、MIPS、RISC-V...
Rust、go、C++ 等编译的程序uclibc / musl-libc库
Chrome v8 浏览器内核......
如何学习
◇强大的内驱力,兴趣牵引
◇身边的同学一起学习
◇学会用搜索引擎,自主解决问题
◇以赛促训,定期复现总结
◇写技术博客,总结相关技术
◇加入联合战队,共同进步
干货分享
◇CTF入门百科ctf-wiki:https://ctf-wiki.org
◇亚利桑那州立大学课程pwncollege:www.pwn.college/
◇刷题网站buuctf:https://buuoj.cn/
◇各大师傅的博客
·END·
原文始发于微信公众号(ipasslab):带你推开PWN世界的大门
评论