PWN & RE方向介绍
PWN
Pwn类题目重点考察选手对于二进制漏洞的挖掘和利用能力,其考点也通常在堆栈溢出、格式化漏洞、UAF、Double Free等常见二进制漏洞上。选手需要根据题目中给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(Exploit),进而对主办方给出的远程服务器进行攻击并获取flag
RE
涉及Windows、Linux、Android平台的多种编程技术,要求利用常用工具对源代码及二进制文件进行逆向分析,掌握Android移动应用APK文件的逆向分析,掌握加解密、内核编程、算法、反调试和代码混淆技术
Re类题目考察选手逆向工程能力。题目会给出一个可执行二进制文件,有些时候也可能Android的APK安装包。选手需要逆向给出的程序,分析其程序工作原理。最终根据程序行为等获得flag。
PWN&RE基础知识
c、python、汇编、Linux、数据结构和算法
RE(逆向工程)入门
1.什么是逆向工程
REer在比赛中的作用
- CTF线上赛: RE全部、PWN题目的逻辑还原、Crypto部分
- AWD攻防线下赛: 捕捉流量包发现程序漏洞,进行相应的修补
CTF中的Reverse:
- 大型软件的小部分逻辑提炼
- 不同平台(ARM,windows,ios,安卓)下软件的小部分逻辑提炼
- 对于热补丁等技术手段的还原
- 病毒程序的原理日志的复现
RE做题步骤
- 查壳:有壳脱壳,无壳根据文件格式进行静态分析
- 查看题目文件:先看一下题目程序的内容和结构:弹出一个图片,图片不能移动或修改一般在这一步获取到题目是否输出字符串?是否有check?有无提示?如果是游戏题是否可以直接玩出来?
有无出题人联系方式? - 静态分析:用IDA进行分析,查看并分析代码逻辑,解出答案
2.静态调试入门
IDA的使用
- 32位程序用IDA Pro(32 bit),64位程序用IDA Pro(64 bit)
- IDA View图形结构窗口:该窗口下可以了解函数跳转关系及函数调用关系
- IDA View文本结构界面:窗口中显示的是具体的底层汇编实现
- ACD键:对数据使用,分别可以令数据以字符串、代码、数据形式显示
- G键:按下后在弹出的窗口输入地址可以跳转至相应位置
- N键:当分析清楚某函数功能时,为方便可将改函数重命名
- H键:转换为16进制
- ;键:添加注释
- 交叉引用:View – >Open subviews – >Cross references,查看引用当前函数的函数ctrl+X
- shift+F12:查看所有字符串窗口,在这个窗口一般可以找到关键信息
- F5:将当前函数的汇编代码反汇编成伪C代码
- Alt+T:搜索,Ctrl+T找到下一个匹配项。
- ALT+B:搜索opcode(二进制数据),搜索16进制
- ···更多查看这篇《工具使用-IDA从入门到理解》
3.动态调试入门
Ollydbg的使用
4.学习逆向工程相关
- 静态:一边做RE题目一边学习,计算机组成原理、操作系统、数据结构、汇编语言相关知识等等
- 动态调试:crackme 160汇编纯逻辑题目
- 拓展:尝试跟着分析博客去破解经典的单机游戏