1 CTF竞赛模式
- 解题模式:通常为在线比赛,解题夺取flag,题型分类如第二节所述,分高者胜。
- 攻防模式:通常为现场比赛,除了需要获取flag外,还需要做防御。
- 混合模式:攻击官方给出的服务器,不需要攻击别人,别人也不会攻击自己。
2 CTF题目分类
2.1 Web网络攻防
通过浏览器访问题目服务器上的网站,寻找网站漏洞,利用漏洞获取服务器的部分或全部权限,获取flag。网站漏洞如下:
- SQL注入
- XSS
- 文件上传
- 文件包含
- 越权
- 逻辑漏洞
- 文件下载
- 命令执行
- 信息泄露
- 接口漏洞
- 综合利用
分类参考:BUGBANK 官方网站 | 领先的网络安全漏洞发现品牌 | 开放安全的提出者与倡导者 | 创新的漏洞发现平台
2.2 RE逆向工程
题目是一个软件,但通常没有软件的源代码,需要利用工具对软件进行反编译甚至反汇编,从而理解软件内部逻辑和原理,找出与flag相关的算法并破解算法获取flag。
2.3 PWN二进制漏洞利用
访问一个本地或远程的二进制服务程序,通过逆向工程找出程序中存在的漏洞,并利用程序中的漏洞获取远程服务器的部分或全部权限,获取flag。程序漏洞如下:
- 栈溢出
- 堆溢出
- 字符串格式化
- 数组溢出
- Linux内核pwn
- 异构
2.4 Crypto密码攻击
分析题目中的密码算法和协议,利用算法或协议的弱点计算密钥或对密文进行解密,从而获取flag。常见的密码算法如下: (包括编码算法、加密算法和摘要/哈希算法,如摩斯密码、base64编码方式、MD5)
- 古典密码
- AES
- DES
- RSA
- 流密码
- 哈希
- ECC
分类参考:CTFHub
2.5 Misc安全杂项
利用隐写术等保护技术将信息隐藏在图像、音频、视频、压缩包中,或者信息就隐藏在一段内存镜像或网络流量中,恢复出隐藏的信息即可获取flag。
- 流量分析
- 电子取证
- 数据隐写
- 无线射频
- 物联网
- 工业控制
- 各种卡
- 密码破解
分类参考:CTFHub
2.6 Mobile移动安全
对安卓和iOS系统的理解,逆向工程等知识。
2.7 区块链
2.8 题目难易程度
题目由易到难为:
- 杂项
- 密码
- web安全
- 逆向
- 二进制
3 学习方向
- A 方向:PWN+Reverse+Crypto 随机搭配
- B 方向:Web+Misc 组合
PS:方向搭配只做参考
4 基础知识
- 必学:Windows 基础、Linux 基础、计算机组成原理、操作系统原理、网络协议分析;
- A 方向:IDA 工具使用(fs 插件)、逆向工程、密码学、缓冲区溢出等;
- B 方向:Web 安全、网络安全、内网渗透、数据库安全等前10的安全漏洞。
入门方向与知识参考:从零开始学习CTF——CTF基本概念 - 知乎 (zhihu.com)
5 语言环境的安装
- Java:用Java跑一个软件,而不是写代码;
- python:用脚本跑密码时可能会用到python环境;
- PHP:做测试或调试,提供服务器环境(后端环境),服务器环境包括很多组件,比如中间件apache,数据库MySQL,操作系统Linux和开发语言的执行环境PHP,自己组合可能会存在兼容问题,PHP study则集成了这些环境,只是系统是Windows。
6 常见工具
- VMware
- burp suite
- wires hark