浅谈CTF-Misc
浅谈CTF-Misc
什么是Misc
Misc 是英文 Miscellaneous 的前四个字母,杂项、混合体、大杂烩的意思。
MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、压缩包解密、流量分析取证、与信息安全相关的大数据等。
详细解释内容请见——>传送门
关于Misc的入门教程在网上挺多的,这里不再做详细阐述。
这里主要对我个人学习过程中所遇到的相关经典胎教问题进行解释。
参考内容:山石安研院第二节CTF夏令营Misc教学内容、sec_wuyy师傅的文章
一、文件头残缺或错误
文件有后缀名,但是无法正常打开,或者没有后缀名,同时通过file命令(Linux)发现文件类型是data,表示很有可能是文件头残缺或错误导致的,这时候需要根据后缀名、题目提示、文件头尾部数据等去猜测文件的真实类型,并使用**winhex、010Editor**等软件添加或修改相应的文件头。
文件类型判断技巧:
文件类型 | 特点 |
---|---|
ZIP | 文件尾部包含0x504B0506的 |
RAR | 文件结尾为0xC43D7B004007 |
JPG | 文件结尾为0xFFD9 |
PNG | 文件头中包含IHDR信息 |
GIF | 文件结尾为0x3B |
二、文件分离
binwalk
binwalk可以快速分辨文件是否由多个文件合并而成,并将文件进行分离,分离成功会在目标文件的目录下生成一个形如**_文件名_extracted**的文件目录,目录中有分离后的文件。
binwalk在kali里是自带的,想在window使用可以参考此教程传送门
简单操作教程
文件分析:binwalk 文件名
文件分离:binwalk -e 文件名
详细操作教程传送门
foremost
如果binwalk无法正确分离出文件,可用使用foremost。
foremost在kali已预装载
文件分离:foremost 文件名 -o 输出文件名
三、盲水印
盲水印是利用二维傅里叶变换,给文件添加肉眼无法直接看到的水印数据。
盲水印不仅仅用于图片,也可应用于像音频这种数据流
当出现两张看起来一模一样的图片,可以用盲水印解密工具来尝试。
BlindWaterMark工具
工具下载传送门
合成盲水印:python3 bwmforpy3.py encode 原图 信息文件 盲水印图片
提取盲水印:python3 bwmforpy3.py decode 原图 盲水印图片 信息文件
详细操作教程传送门
四、音频隐写
详细可以参考此文章传送门
推荐工具
MP3stego
工具下载传送门
加密: encode -E 加密的txt文件名 -P pass 加密的wav文件名 输出的mp3文件名
解密:decode -X -P pass MP3文件名
五、伪加密
一个ZIP文件由三部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标准
无加密:压缩源文件数据区的全局加密应当为00 00,且压缩源文件目录区的全局方式位标记应当为00 00
真加密:压缩源文件数据区的全局加密应当为09(或奇数) 00,且压缩源文件目录区的全局方式位标记应当为09(或奇数) 00
伪加密:压缩源文件数据区的全局加密应当为00(或其他数) 00,且压缩源文件目录区的全局方式位标记应当为09(或奇数) 00
六、图片隐写
常见的图片隐写方式:
摘自:传送门
1.修改数据(png图片用winhex或者是010工具打开后,可以看到第二行前四个数据是高,后四个数据是宽。一般需要修改这两组数据来获得完整的图片)
2.图片的属性,详细信息中含有flag或者是含有密码,可以通过解密工具进行解密。
3.图片中含有另一张图,这时最简单的方法是使用foremost工具进行图片的分离
4.通过查看一个文件的文件头含有:data:image/png;base64,这就属于png图片格式,真正的base64编码是前缀之后的那些数据,然后就可以利用base64转图片进行操作(base64比较常用,但还是具体问题具体分析)
5.修改文件的后缀名:如将txt文件修改为jpg文件或者是png文件;有些题目需要将所有的文件名修改为png或jpg文件名后缀,然后拼接成为一个完整的flag
……
推荐工具:
OutGuess
下载(kali)教程传送门
隐藏文件:outguess -k 秘钥 -d 隐藏文件 原始图片 加密后的图片
提取文件:outguess -k 秘钥 -r 加密后的图片 输出文件名
七、流量分析
IP筛选
ip.src == 地址 | 源ip筛选 |
---|---|
ip.dst == 地址 | 目的ip筛选 |
ip.addr == 地址 | ip筛选 |
MAC地址筛选
eth.dst == A0:00:00:04:C5:84 | 目标mac地址筛选 |
---|---|
eth.addr | mac地址筛选 |
端口筛选
tcp.dstport == 80 | 筛选tcp协议的目标端口为80的流量包 |
---|---|
tcp.srcport == 80 | 筛选tcp协议的源端口为80的流量包 |
udp.srcport == 80 | 筛选udp协议的源端口为80的流量包 |
协议筛选
tcp | 筛选协议为tcp的流量包 |
---|---|
udp | 筛选协议为udp的流量包 |
arp/icmp/http/ftp/dns/ip | 筛选协议为arp/icmp/http/ftp/dns/ip的流量包 |
注:可用!加协议名或者not加协议名表示排除该协议
流量包的修复
通过在线pacp包修复工具进行修复 传送门
才疏学浅、粗略总结,如有不足和错误,还望各位大师傅们帮忙指正:)!!!