MISC处处是细节,玩的就是套路。工欲善其事,必先利其器,先在此附上MISC常用的工具下载地址:
https://github.com/ctf-resources/misc
常用的文件头总结
JPEG (jpg) 文件头:FFD8FF 文件尾:FF D9
PNG (png) 文件头:89504E47 文件尾:AE 42 60 82
GIF (gif) 文件头:47494638 文件尾:00 3B
ZIP 文件头:504B0304 文件尾:50 4B
TIFF (tif) 文件头:49492A00
Windows Bitmap (bmp) 文件头:424D
CAD (dwg) 文件头:41433130
Photoshop (psd) 文件头:38425053
培训题目答题过程总结
1.PNG图片处理:
发现数据块异常
使用stegsolve分析根据块大小找到块的CRC码,根据校验码在winhex中搜索
复制出异常的数据块
789C5D91011280400802BF04FFFF5C75294B5537738A21A27D1E49CFD17DB3937A92E7E603880A6D485100901FB0410153350DE83112EA2D51C54CE2E585B15A2FC78E8872F51C6FC1881882F93D372DEF78E665B0C36C529622A0A45588138833A170A2071DDCD18219DB8C0D465D8B6989719645ED9C11C36AE3ABDAEFCFC0ACF023E77C17C7897667
在Python中对数据块进行解码
这个01字符串的长度刚好是625,考虑可能是二维码,编写程序如下:
#!/usr/bin/env python
from PIL import Image
MAX = 25
pic = Image.new("RGB",(MAX, MAX))
str = "1111111000100001101111111100000101110010110100000110111010100000000010111011011101001000000001011101101110101110110100101110110000010101011011010000011111111010101010101111111000000001011101110000000011010011000001010011101101111010101001000011100000000000101000000001001001101000100111001111011100111100001110111110001100101000110011100001010100011010001111010110000010100010110000011011101100100001110011100100001011111110100000000110101001000111101111111011100001101011011100000100001100110001111010111010001101001111100001011101011000111010011100101110100100111011011000110000010110001101000110001111111011010110111011011"
i=0
for y in range (0,MAX):
for x in range (0,MAX):
if(str[i] == '1'):
pic.putpixel([x,y],(0, 0, 0))
else:
pic.putpixel([x,y],(255,255,255))
i = i+1
#pic.show()
pic.save("flag.png")
最后得到二维码扫描即可
2.binwalk逐张图片提取即可
3.图片高度和宽度隐写
实在找不到的情况下就适当更改图片大小看看
4.打开图片看到像素点,这样的题目必然是对图片像素运算的考察
通过stegsolve逐个RGB通道观察异常,本例中R0通道为全黑,讲R,G,B,Alpha的0通道取出,两两异或后发先G0通道A0通道异或后得打flag
5.
题目信息为mirror,考虑讲图像所有字节反转后保存为图片后进行查看:
data = open('../task/flag.jpg', 'rb').read()
data = data[::-1]
f = open('flag.png', 'wb')
f.write(data)
f.close()
发现图片名是music.jpg,直接binwalk提取以后得到两个文件,在使用mp3stego工具解码后得到flag
png图片经过pngcheck后无块异常
继续通过binwalk提取以后得到如下两个文件:
其实都没有什么意义,直接stepsolve打开后查看逐个通道,在通道处发现flag
8.wav文件直接Audacity打开,观察波形图和频谱图是否有flag信息
9.通过pngcheck查看块数据发现图片6的IDAT数据块不满
其他图片的IDAT数据块大小为32768,上面的8192明显小与这个数据。考虑是隐写
考虑使用stegsolve进行数据提取,常用的配置说明如图所示:
9.缺少图片头,补上图片头即可
GIF文件目前有两种文件头GIF89和GIF79
f = open('../task/xx.gif', 'rb').read()
new_f = open('flag.gif', 'wb')
new_f.write('GIF8'+f)
new_f.close()
10.压缩包爆破
掩码爆破,bob是掩码吗,四个????表示后面四位密码不知道是啥
11.伪加密
12.wireshark流量分析
对于http流量较多的pcap包,可直接尝试搜索字符串flag或php
追踪Http流发现如下关键信息
对上面的base64字符串拼接解密
说明http请求回复的内容是flag.txt的内容,我们将原始数据复制出来进行下图解码操作就可以获取flag了
备注:
从通信方式的角度看,后门可以分为http/https型、irc型、dns型、icmp型等,对存在这些协议的流量包进行分析,最后在icmp协议中发现每个包最后的字符可以拼接成flag。