ctf-misc总结(一)

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。


版权声明:本文为weixin_41038905原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。