CTF 入门基础
什么是 CTF
CTF(Capture The Flag,夺旗赛)起源于 1996 年 DEFCON 全球黑客大会,是网络安全爱好者之间的竞技游戏。CTF 竞赛涉及众多领域,内容繁杂。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为'Flag'。
学习 CTF 之前,建议先了解到底什么是 CTF 以及学习的目的。其次最好具备相应的编程能力,若是完全不具备这些能力极有可能直接被劝退。毕竟比赛的时候动不动写个脚本,搞个审计的。
CTF 主要方向
CTF 比赛知识范围大致分为:Web 安全、PWN(二进制安全)、Reverse(逆向破解)、Crypto(密码学安全)、Forensics(数字取证)、Misc(杂项)。
Web 安全
CTF 中的 Web 题型,就是给定一个 Web 网站,选手要根据题目所提示的信息,找到网站上的 flag 字符串。做题的方法类似于渗透测试,但通常不会是一个完整的渗透测试,而是用到渗透测试中的某一个或某几个环节。可能涉及信息搜集、各类漏洞发现与利用、权限提升等等。为了获取 flag,可能需要拿到管理员权限,数据库权限,甚至获取网站所在服务器的权限。
- 所需知识:语言(PHP、Python、JavaScript…)、数据库(MySQL、MSSQL…)、服务器(Apache、Nginx…)、Web 框架(ThinkPHP、Flask…)、语言特性(弱类型、截断…)、函数特性(is_numeric、strcmp 等)。
- 常见考点:SQL 注入、XSS 跨站脚本、文件上传漏洞、反序列化漏洞、命令执行、逻辑漏洞等。
PWN
PWN 在安全领域中指的是通过二进制/系统调用等方式获得目标主机的 shell。CTF 中主要考察二进制漏洞的发掘和利用,需要对计算机操作系统底层有一定的了解。在 CTF 竞赛中,PWN 题目主要出现在 Linux 平台上。
- 所需知识:C/C++编程语言基础、编译原理、汇编、反汇编、操作系统、加密与解密、堆栈原理、栈溢出、堆溢出。
- 常见考点:缓冲区溢出、格式化字符串漏洞、Use After Free、整数溢出、ROP 链构造等。
Reverse(逆向)
CTF 之 REVERSE 题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底。需要掌握汇编,堆栈、寄存器方面的知识。有好的逻辑思维能力。主要考查参赛选手的逆向分析能力。
- 所需知识:汇编、反汇编、堆栈、调试器、代码分析、OllyDBG、IDA 等。
- 常见考点:算法还原、注册机编写、脱壳、加壳检测、混淆代码还原。
Crypto(密码学)
CTF 之 CRYPTO 部分题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。
- 所需知识:数学知识、密码编制、密码破解、古典密码、现代密码、密码分析。
- 常见考点:RSA 算法、AES 对称加密、哈希碰撞、隐写术结合加密、自定义编码。
Forensics(数字取证)
CTF 之 FORENSICS 包括文件格式分析,隐写术,内存转储分析或网络数据包捕获分析,提取静态数据文件中隐藏的信息的任何挑战都可以归为这一类。
- 所需知识:数据恢复、磁盘取证、内存取证、流量分析、文件隐写。
- 常见考点:PCAP 包分析、内存镜像提取、文件头修改、隐藏分区查找。
Misc(杂项)
就是除上述之外的乱七八糟的网络安全范围内的东西,英文全称为 Miscellaneous,意思是混杂的、各种各样的。MISC 题通常包括文件分析、图像隐写、数据搜索、内存镜像分析和流量分析等。题型多样,脑洞大,趣味性强是 MISC 题型的主要特点。
- 所需知识:信息隐藏、文件格式、内存镜像、流量分析、数据分析、社会工程等。
- 常见考点:二维码识别、压缩包爆破、音频隐写、视频隐写、键盘记录分析。


