CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。
其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称为“Flag”。
以我国的CTF赛事来总结,题目通常分为:WEB、逆向、PWN、移动安全、密码学和杂项。
一 CTF题目类型
web
- sql注入、xss、文件上传、包含漏洞、xxe、ssrf、命令执行、代码审计等等
pwn
- 攻击远程服务器的服务
- 会提供服务程序的二进制文件
- 分析漏洞并写出exp
- 栈溢出、堆溢出
- 绕过保护机制(ASLR,NX等)
Reverse
- 逆向,破解程序的算法来得到程序中的flag
- 对抗反调试、代码混淆等等
Mobile
- 主要考察选手对安卓和ios系统的理解
密码学
- 现代密码
- 古典密码
杂项
那么哪种题目叫杂项呢?
只要不属于上述类别的题目统称为杂项
- 隐写
- 取证
- 编解码
- PS
- 压缩包
- 编程
- …
解题思路
这些题目通常都会给一个文件
这些文件可以是压缩包,MP3,paf,
图片文件受损,需要修复(常见的是缺少文件头)
给的文件无后缀该怎么判断文件类型
binwalk、file等
寻找合适的工具
常用的工具
- https://github.com/zardus/ctf-tools
- https://github.com/apsdehal/awesome-ctf
- http://g33kinfo.com/info/archives/6261
- https://www.ctftools.com/down/
二 密码学
2.1 摩尔斯电码
-. … ..-. — -.-. ..- …
摩尔斯电码在线翻译:http://www.zhongguosou.com/zonghe/moErSiCodeConverter.aspx
例题:我们截获了敌军命令密文,你能破解出来吗?45464545 454545 464645 46454646 454545 464646 46
转换成莫尔斯密码:youlose
2.2 常见码制
- Base 64编码: dGVybWluYXRvcg==
- MD5: 9a85db6a0e0003fe1293737c39acc824
- SHA-1: 11fee33453c427b3e6ebabb7d2d2120312c0e7c9
- URL编码: %05 %37 %08
- HEX编码:74 65 72 6d 69 6e 61 74 6f 72
- JsFuck:[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[]
- Html编码:ΤΕ
- Unicode编码:r《》

2.2.1 brainfuck
- 极小化的计算机语言,按照Turing complete思想设计
- 用最小的概念实现一种简单的语言,只有八种符号
- (、>、<、+、-、.、,、[、]、)
- 如brainfuck(hello)
2.2.2 JOTHER
- 匿名函数的原生形式
- 由[、]、(、)、{、}、+、!组成
- 可在浏览器的console直接还原
2.2.3 JSFUCK
使用6个字符[、]、(、)、!、+来编写JavaScript程序
2.2.4 猪圈密码
一种以格子为基础的简单替代密码
2.2.5 如何区分Html编码与Unicode编码?
Unicode都以
结尾
2.2.6 码制转换工具
- 火狐浏览器插件:HackBar
- 在线转码: http://encode.chahuo.com/
- 时间戳转码:http://tool.chinaz.com/tools/unicode.aspx
- Html码制表:http://www.jb51.net/onlineread/htmlchar.htm
2.2.7 凯撒密码
- 密文:ufsnjobups
- 明文:terminator
更多适用于秘钥空间大,密文样本多的情况
凯撒解密
2.2.8 栅栏密码
- 明文:THERE IS A CIPHER
- 抽取空格:THEREISACIPHER
- 分组:TH ER EI SA CI PH ER
- 抽取第一组:TEESCPE
- 抽取第二组:HRIAIHR
- 密文:TEESCPEHRIAIHR
2.2.9 键盘布局加密
4esxcft5 rdcvgt 6tfc78uhg 098ukmnb
2.2.10 MD5
- 压缩性:任意长度的数据,算出MD5值长度是固定的
- 容易计算:从原数据算出MD5值很容易
- 抗修改性:对原数据修改1个字节,得到的MD5值都有很大区别
- 强抗碰撞:已知原数据和其MD5,要找到一个具有相同MD5值的数据非常困难
2.2.11 现代密码学——DES
- 明文:terminator
- 密文格式:E8wSK/dogmBbcyLAOZsnitpH/U6MP4BR
- 加/解密网址:http://e-file.arkoo.com/tools/des3.htm
2.2.12 现代密码学——RSA
1.获取公匙(n,e)
2.计算m^e=c mod(n)
3.密文c为m的e次幂除以n所得的余数
解密:
1.解密过程即是求m,
2.需要用私匙(n,d),
3.解c^d=m mod(n),得出明文m
三 隐写
隐写是将Flag隐藏到图片、音频、视频等各类数据载体中
知识准备:binwalk、file、strings命令、常见文件头、stegsolve工具使用、LSB算法等。
图片类隐写共分为7类
音频类分为2类
3.1 文件拼接
通常是copy命令将文件拼接而成
copy /b 2.jpg+1.zip output.jpg
工具:binwalk、dd、winhex
常见图片文件结构
JPEG/JPG
——文件头标识(2 bytes):FF D8
——文件结束标识(2 bytes):FF D9
PNG
——文件头标识(8 bytes):89 50 4E 47 0D 0A 1A 0A
GIF
——文件头标识(6 bytes):47 49 46 38 39(37) 61
BMP
——文件头标识(2 bytes):42 4D
3.2 图片拼接
flag隐藏在图片文件内容的末尾
利用16进制查看工具或图片格式查看工具
3.3 图片分层——Stegsolve
图片分层查看—针对PS分层中存在的隐藏信息
3.4 图片后缀名迷惑
将图片后缀名改为压缩包文件格式后解压取得flag
3.5 图片处理
Stegdetect
stegsolve
3.6 动态图帧
- 将信息隐藏在动态图中,一闪而过,肉眼难以看到
- 工具:Namo GIF、Photoshop CS
3.7 图片修复
- 图片被损坏,缺少某部分数据如文件头等,需要对图片进行修复
- 工具:winhex
3.8 音频分析
wav格式的音频文件
改变音频轨道和效果,分析音频频谱,观察音频波形,找出波形规律
最后为01字串转换ascii码即可
wav格式的音频文件
改变音频轨道和效果,分析音频频谱,观察音频波形,找出波形规律
最后为01字串转换ascii码即可
例题: 杂项(互相伤害)
首先拿到文件发现是zip,解压后文件无后缀,然后binwalk、file看一下
发现是流量包,将文件重命名改为 yi.pcapng,使用wireshark打开,大概浏览一下,大多为TCP包和http包,导出http对象。
保存后,发现全部为图片,随便用一个图片binwalk一下,发现是个图种
binwalk -e 全部解压之后发现,有一个没有解压,需要密码,然后在另外一张图中找到一个二维码
扫描结果为:U2FsdGVkX1+VpmdLwwhbyNU80MDlK+8t61sewce2qCVztitDMKpQ4fUl5nsAZOI7bE9uL8lW/KLfbs33aC1XXw==
解密之后为:668b13e0b0fc0944daf4c223b9831e49
输入字符串解压,得到一个图片
四 数据包分析
- Wireshark过滤规则
- 网络协议分析(HTTP、SMTP、FTP……)
- 漏洞利用分析(SQL注入)或文件提取
PACP file:
Log file: