导语
最近发现自己的知识体系有点混乱,感觉什么都学了,但是什么都没学会。借这篇文章整理下自己的思路,顺便系统学习一下什么是CTF
CTF
CTF(Capture The Flag),夺旗赛。参赛方通过攻防对抗、程序分析等形式,率先从主办方的给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并提交给主办方,从而夺得分数。这串内容为Flag
flag一般拥有固定的格式,如flag{xxxxx},利用固定格式来反推flag也是一种常见的解题思路
通常来说CTF是以团队为单位进行参赛。每个团队3-5人(具体根据主办方要求决定),在整个比赛过程中既要每个选手拥有某个方向的漏洞挖掘能力,也要同队选手之间的相互配合
竞赛模式
Jeopardy-解题
参赛队伍可以通过互联网或者现场网络参与,参数队伍通过与在线环境交互或文件离线分析,解决网络安全技术挑战获取相应分值,类似于 ACM 编程竞赛、信息学奥林匹克赛,根据总分和时间来进行排名
最常规的CTF比赛形式
AwD-攻防模式
Attack with Defense(AwD)全称攻防模式,在攻防模式CTF赛制中,参赛队伍连接到同一个网络空间。主办方为每支队伍分配防守主机,每个队伍需要防护自己的主机不被攻击的同时挖掘漏洞并攻击对手服务来的分
AwD通常仅包含Web及Pwn两种类型的题目
比赛内容
- Reverse(逆向类):对软件的结构、流程、算法等进行逆向破解
- 要求:较强的反汇编、反编译的能力
- 所需知识:汇编语言、加密与解密、常见的反编译工具
- Pwn(溢出类)
- 常见的类型:整数溢出u、栈溢出、堆溢出等
- 要求:考查对漏洞的利用能力
- 所需知识:C、OD+IDA、数据机构、操作系统
- Web(Web漏洞类)
- 常见类型: XSS、文件包含、代码执行、上传漏洞、SQL注入等,也有些简单的关于网络基础知识的考察:如返回包、TCP/IP、数据包内容和构造
- 所需知识:PHP、Python、TCP/IP、SQL
- Crypto(加密类):考察这种加解密技术
- 要求:考查密码学相关知识点
- 所需知识: 矩阵、数论、密码学
- Mobile
- 要求:涉及Android和iOS两个平台,主要是Android逆向,破解APK并提交正确flag
- 所需知识: Java、Android开发、常用工具
- Misc(杂项)
- 常见题目:隐写术、电子取证、人肉搜索、数据分析、大数据统计等
- 所需知识: 常见隐写术工具、Wireshark等流量审查工具、编码知识