如何打CTF竞赛?

一、首先需要认识CTF竞赛

1、什么是CTF竞赛?

CTF(Capture The Flag)一般译作“夺旗赛”,在网络安全领域中指网络安全技术人员之间进行技术竞技的一种比赛形式。 [11]通过各种攻击手法,获取服务器后寻找指定的字段,或者文件中某一个固定格式的字段,这个字段叫做Flag,其形式一般为Flag{xxxxxxxX},提交到裁判机就可以得分。

2、竞赛模式

解题模式(Jeopardy)

在解题模式CTF赛制中,参赛队伍可以通过线上或者线下参与,这种模式的CTF竞赛与ACM编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。

攻防模式(Attack-Defense)

在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负。

混合模式(Mix)

结合解题模式与攻防模式的CTF赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式CTF赛制的典型代表如iCTF国际CTF竞赛。

3、题目类型

我们先不讨论攻防模式,因为很少有CTF竞赛初赛就是攻防模式的,一般像大型比赛的半决赛和决赛才会进行攻防模式,现在的CTF竞赛初赛都是以解题模式来进行选拔的。

MISC(杂项)

意如名,很杂,考的很多,主要有以下类型,基本包含了,

隐写
  1. 图片隐写

    • 基础隐写:LSB(最低有效位)、EXIF 信息、颜色通道分离、文件尾追加数据

    • 文件结构:PNG(IDAT 块)、JPG(DQT/DHT 表)、GIF(帧分离、延迟时间)

    • 进阶技巧:CRC 校验错误修复、图片大小篡改、盲水印、傅里叶变换分析

  2. 音频隐写

    • 频谱分析:Audacity 查看波形/频谱图(如摩尔斯电码、SSTV)

    • LSB 隐写:WAV 文件 PCM 数据隐写

  3. 视频隐写

    • 帧提取(ffmpeg)、逐帧分析

    • 隐藏字幕、时间轴信息篡改

  4. 文本隐写

    • 空格/零宽度字符(Zero-Width Characters)

    • 字体内嵌信息、排版特征(如字间距、行间距)

    • 特定编码隐写:Snow(文本末尾空格隐写)

  5. 其他文件隐写

    • PDF 隐写:对象流、隐藏图层、JavaScript 触发

    • Office 文档:宏代码、隐藏文字、OLE 对象

    • 压缩包嵌套(套娃)、加密压缩包爆破

常见编码识别与转换
  1. 常见编码识别与转换

    • Base64/32/16、URL 编码、HTML 实体编码

    • Hex 编码、ASCII 编码(十进制/十六进制/八进制)

    • 莫尔斯电码、敲击码(Tap Code)、培根密码

    • 进制转换(二进制、八进制、十六进制)

    • 字符替换类编码:凯撒密码、ROT13、栅栏密码、维吉尼亚密码

  2. 特殊编码体系

    • 文字替换:猪圈密码(Pigpen)、银河字母(Galactic Alphabet)

    • 棋盘密码(Polybius Square)、盲文(Braille)

    • 条形码/二维码:Code128、QR Code 纠错等级修复

    • 电报编码:中文电码、Unicode 编码(UTF-8/16/32)

  3. 编码混淆技巧

    • 多重编码嵌套(如 Base64 套用多次)

    • 自定义编码表(需逆向分析)

网络流量包分析
  1. 网络流量包分析

    • 协议分析:HTTP/FTP/TCP/UDP/DNS 请求提取

    • 关键字段:Cookie、Authorization 头、URL 参数

    • 文件提取:从流量中还原传输的文件(如图片、压缩包)

协议漏洞利用
  1. 协议漏洞利用

    • DNS 隧道数据隐写

    • ICMP 协议隐写(Ping 数据包)

    • USB 键盘流量捕获与解析

  2. 无线协议与蓝牙

    • Wi-Fi 握手包分析(aircrack-ng

    • 蓝牙协议(BLE)数据嗅探

磁盘镜像分析
  1. 磁盘镜像分析

    • 文件系统修复:EXT4/NTFS/FAT32 文件恢复

    • 工具:AutopsyFTK Imagertestdisk

    • 隐藏分区、磁盘 slack 空间数据提取

内存取证
  1. 内存取证

    • 内存镜像分析(Volatility 框架)

    • 进程列表、网络连接、注册表键值提取

    • 恶意进程检测、DLL 注入痕迹

日志分析
  1. 日志分析

    • Web 日志(Apache/Nginx)中的攻击痕迹

    • Windows 事件日志(Event Log)分析

压缩包破解
  1. 压缩包破解

    • 密码爆破:John the Ripperhashcat

    • 字典生成:crunchcupp

    • 伪加密(Zip 文件头修改)

    • 明文攻击(已知部分文件内容)

文件修复与结构分析
  1. 文件修复与结构分析

    • 文件头/尾修复(如 PNG/PDF 文件头缺失)

    • 文件签名识别(file 命令、Hex 编辑器)

    • 分离嵌套文件

  2. 信息搜集

    • 图片元数据(GPS 坐标、拍摄设备)

    • 域名Whois查询、IP归属地分析

    • 社交媒体信息关联(如 EXIF 中的用户名)

  3. 验证码与人类交互

    • 验证码绕过(OCR 识别、人工打码平台)

    • 音频验证码转文本

脑洞题
  1. 脑洞题

    • 时间戳转换(Unix 时间戳、Windows 时间)

    • 条形码/二维码生成与扫描

    • 游戏存档修改(如 save.dat 文件)

  2. 组合型题目

    • 多步骤嵌套(如隐写+编码+流量分析)

    • 动态交互题(需要编写脚本自动化处理)

Crypto(密码学)

密码学中考得较多的应该是RSA,MD5这种比较多,现在的密码学不单单只是一种密码,而是几种一起考,难度直线上涨,其他类型的也有,比较简单,一般此题目都是通过python脚本来进行解题的,像RSA的p,q一般都是几十位数的

  1. 替换密码(Substitution Cipher)
    • 单表替换

      • 凯撒密码(Caesar Cipher):位移替换(ROT13为特例)

      • 仿射密码(Affine Cipher):加密公式 E(x)=(ax+b)mod  26E(x)=(ax+b)mod26

    • 多表替换

      • 维吉尼亚密码(Vigenère Cipher):通过密钥循环生成多表替换

      • 自动密钥密码(Autokey Cipher):使用明文或密钥扩展生成密钥流

  2. 置换密码(Transposition Cipher)
    • 栅栏密码(Rail Fence):按“之”字形排列后按行读取

    • 列置换密码(Columnar Transposition):按密钥列顺序重排明文

    • 矩阵置换:将明文填充至矩阵后按特定规则读取(如螺旋顺序)

  3. 其他古典密码
    • 培根密码(Bacon's Cipher):用两种字符(如A/B)表示5位二进制编码

    • 摩尔斯电码(Morse Code):符号与短长音(·/−)的映射

    • 棋盘密码(Polybius Square):5x5矩阵替换(如ADFGX密码)

  4. 对称加密(Symmetric Cryptography)
    • 分组密码

      • AES:ECB/CBC/CTR等模式,重点分析填充(PKCS#7)及密钥扩展

      • DES/3DES:Feistel结构,弱密钥与半弱密钥攻击

      • S盒分析:差分分析、线性分析(如S盒的差分均匀性)

    • 流密码

      • RC4:密钥调度算法(KSA)与伪随机生成算法(PRGA)漏洞

      • LFSR(线性反馈移位寄存器):通过已知输出序列恢复初始状态

  5. 非对称加密(Asymmetric Cryptography)
    • RSA

      • 基础原理:n=p×qn=p×q, ϕ(n)=(p−1)(q−1)ϕ(n)=(p−1)(q−1), ed≡1mod  ϕ(n)ed≡1modϕ(n)

      • 常见攻击

        • 小模数分解(Fermat、Pollard's Rho算法)

        • 共模攻击(相同n,不同e)

        • 小指数攻击(低e如e=3)

        • Wiener攻击(d过小)

        • Coppersmith攻击(已知明文高位或低位)

        • 选择密文攻击(CCA)

      • 进阶变种

        • RSA-OAEP填充、RSA签名(PSS模式)

        • 多素数RSA(n = p*q*r)、RSA-CRT(中国剩余定理加速)

    • 椭圆曲线密码(ECC)

      • 椭圆曲线离散对数问题(ECDLP)

      • 异常曲线攻击(Smart's Attack)

      • 无效曲线攻击(无效点注入)

    • Diffie-Hellman密钥交换

      • 中间人攻击(MITM)

      • 小素数子群攻击(参数p-1含小因子)

  6. 哈希函数(Hash Function)
    • 常见哈希算法:MD5、SHA-1、SHA-256、SHA-3

    • 攻击类型

      • 碰撞攻击(Birthday Attack)

      • 长度扩展攻击(如MD5、SHA-1)

      • 彩虹表(Rainbow Table)预计算

    • 应用场景:HMAC、盐值(Salt)防御

  7. 消息认证码(MAC)
    • CBC-MAC、HMAC

    • 伪造攻击(如长度扩展攻击影响某些MAC实现)

  8. 数论(Number Theory)
    • 模运算:逆元、欧拉定理、费马小定理

    • 扩展欧几里得算法(求解ax + by = gcd(a,b))

    • 中国剩余定理(CRT)

    • 素数检测:Miller-Rabin算法

    • 离散对数问题(DLP):BSGS算法、Pohlig-Hellman攻击

  9. 代数(Algebra)
    • 有限域(Galois Field)运算:GF(2^8)上的乘法和逆元

    • 矩阵运算:行列式、逆矩阵(用于Hill密码)

    • 多项式环:Reed-Solomon编码、Berlekamp-Massey算法

  10. 常见编码
    • Base64/32/16、Hex编码(ASCII十六进制)

    • URL编码、HTML实体编码(如A表示'A')

    • 自定义编码表(需逆向或统计分析)

web安全

从这开始真正进入网络安全的领域,web需要掌握以下知识

信息收集与基础探测
  1. 目录/文件枚举

    • 使用工具:dirsearchgobusterffuf

    • 常见敏感文件:.git/.svn泄露、robots.txtphpinfo.php、备份文件(.bak/.swp

  2. 指纹识别

    • 识别框架/CMS:WordPress、ThinkPHP、Django、Flask

    • 中间件版本:Apache/Nginx/IIS 版本漏洞

  3. 端口与服务扫描

    • 工具:nmapmasscan

    • 常见服务:SSH、FTP、Redis(未授权访问)、MySQL(弱密码)

常见 Web 漏洞
  1. SQL 注入(SQLi)
    • 类型

      • 联合查询注入(Union-Based)

      • 布尔盲注(Boolean-Based)

      • 时间盲注(Time-Based)

      • 报错注入(Error-Based)

  2. 跨站脚本(XSS)

    • 类型

      • 反射型 XSS(URL 参数触发)

      • 存储型 XSS(数据库存储恶意脚本)

      • DOM 型 XSS(前端 JavaScript 操作触发)

    • 利用场景

      • Cookie 窃取(document.cookie

      • 钓鱼攻击(伪造登录页面)

    • 绕过技巧

      • 事件处理器:onerroronload

      • 编码绕过:HTML 实体、JavaScript Unicode 编码

      • CSP 绕过:unsafe-inline、JSONP 回调

  3. 跨站请求伪造(CSRF)

    • 原理:诱导用户发起非预期请求(如修改密码)

    • 防御绕过

      • 检查 Referer 头伪造(利用开放重定向)

      • JSON CSRF(Content-Type 为 text/plain 时绕过)

  4. 文件上传漏洞

    • 绕过技巧

      • 后缀名绕过(.php5.phtml.htaccess

      • MIME 类型伪造(image/png

      • 文件内容检测绕过(添加图片头 GIF89a

      • 竞争条件(上传+快速访问临时文件)

    • 利用链

      • 上传 Webshell()--一句话木马

      • 结合文件包含(LFI)执行恶意代码

  5. 文件包含(LFI/RFI)

    • 本地文件包含(LFI)

      • 读取敏感文件:/etc/passwd、源码(index.php

      • 结合 PHP 伪协议:php://filter/convert.base64-encode/resource=index.php

    • 远程文件包含(RFI)

      • 加载远程恶意脚本(需 allow_url_include=On

  6. 命令注入(Command Injection)

    • 常见触发点system()exec()popen()

    • 绕过技巧

      • 分隔符:;&&|\n

      • 空格绕过:${IFS}%09(Tab)

      • 通配符:/???/??? → /bin/cat

  7. 反序列化漏洞

    • 语言特性

      • PHP:unserialize() 触发魔术方法(__wakeup__destruct

      • Java:Apache Commons Collections 链(CC1/CC6)

      • Python:pickle 模块的 __reduce__ 方法

    • 利用链构造:POP(Property-Oriented Programming)链

服务端漏洞
  1. 服务端模板注入(SSTI)

    • 常见模板引擎

      • Jinja2(Python):{{ 7*7 }} → 49

      • Twig(PHP):{{_self.env.registerUndefinedFilterCallback("exec")}}

      • Freemarker(Java):${"freemarker.template.utility.Execute"?new()("id")}

    • 利用场景:执行系统命令、读取文件

  2. SSRF(服务端请求伪造)

    • 攻击目标

      • 内网服务探测(http://127.0.0.1:8080

      • 协议利用:file:///etc/passwdgopher:// 攻击 Redis

  3. XXE(XML 外部实体注入)

    • 利用方式

      • 读取文件:

      • 内网探测:http://192.168.1.1:80

      • DoS攻击:Billion Laughs(实体扩展攻击)

  4. 条件竞争(Race Condition)

    • 场景

      • 文件上传后快速访问(绕过删除操作)

      • 高并发修改账户余额(金融类题目

客户端漏洞
  1. CORS 配置错误

    • 漏洞利用

      • 任意 Origin 允许(Access-Control-Allow-Origin: *

      • 窃取用户敏感数据(通过恶意页面发起跨域请求)

  2. JSONP 劫持

    • 原理:利用回调函数窃取数据(

你可能感兴趣的:(安全,web安全,网络)