前言
由于自己太菜了,而且misc的考点很广泛光加密就有很多,所以目前阶段只能看着wp复现
【2023 羊城杯】ai和nia的交响曲
一个wireshark流量包,搜索flag字符串
发现了flag2.zip,然后选中该流,文件->导出http对象
(可以看到基本都是TCP流和HTTP,所以也可以跟随流来分析)
题解说这是一个伪加密
通过搜查资料
如遇加密压缩包,在没有密码提示的情况下,先判断是不是伪加密
最简单的方法就是看十六进制数据,第一行如果有09多半就是了
点击查找十六进制数值搜索504B,最后如果有09那基本就是了,改为00完活
对比了一下真实密码压缩的,果然504B后面几乎没有09
替换的时候,只需要换504B后面第一个即
可,不能全部替换×
然后获得一个txt里面都是时间
(看wp都是0宽,猜测是因为00:才想的到把)我可以想到的只有肯定有隐写的数据
Unicode Steganography with Zero-Width Characters (mzy0.com)
提示先查看flag1,这里在upload.php中发现,(咋发现的,我把全部文件都下载了一个个看的)
这里如果直接把wireshark中拖进010是不行的
需要把右下角换成 英文 raw 中文 原始数据,然后另存为,但是这样数据也会显示其他的,需要手动删除
文件头找这个之前都删除,文件尾部找END,也就是(49454E44)
二进制提取
从图片中提取二进制
from PIL import Image
im = Image.open('1.png')
pix = im.load()
width = im.size[0]
height = im.size[1]
for x in range(width):
for y in range(height):
r, g, b = pix[x, y]
if r>200:
print(1,end='')
else:
print(0,end='')
windows用这个库有问题,直接用kali跑了
二进制解码发现提示HINT:BV1wW4y1R7Jv&&FLAG1:@i_n1a_l0v3S_
✌们写的(拿到flag1,hint一眼bv号,https://www.bilibili.com/video/BV1wW4y1R7Jv)
然后根据B站视频一秒一个字符,获得flag (最后有个提示是时间+1是flag)CAOCAOGAIFAN**
@i_n1a_l0v3S_CAOCAOGAIFAN
这一道题就折磨我挺多时间的。。。。
总结
这道题的思路就是全局搜索flag,然后导出http包,如果zip中包含信息图片,需要去头去尾,如果只是单个图片转换为原始数据导出即可,然后09是伪加密在PK后面
EZ_misc
开局一个图片考虑隐写和套娃,直接010
这道题首先图片不完整尝试爆破宽高
总是以固定的八个字节开头 89 50 4E 47 0D 0A 1A 0A
数据块长度13 00 00 00 0D
文件头数据块 IDCH 49 48 44 52
13位数据块(IHDR)
下面是宽和高 00 00 01 5E 00 00 00 2B
然后这五个字节一次是 Bit depth \ColorType \Compression method \ Filter method \ interlace method
08 06 00 00 00
接下来是png CRC校验码
00 41 DF CF 32
CRC校验码,由IDCH和IHDR共17位字节进行crc计算得到
import struct
import zlib
def hexStr2bytes(s):
b = b""
for i in range(0,len(s),2):
temp = s[i:i+2]
b +=struct.pack("B",int(temp,16))
return b
str1="49484452" # 数据表示快,第一行的最后四位 IDCH
str2="0806000000" # CRC前五位 那五个字节
bytes1=hexStr2bytes(str1)
bytes2=hexStr2bytes(str2)
wid,hei = 350,43 #0x015e,0x002b 宽和高转10进制
crc32 = "0x9D223066" #crc校验码四位
for w in range(wid,wid+2000):
for h in range(hei,hei+2000):
width = hex(w)[2:].rjust(8,'0')
height = hex(h)[2:].rjust(8,'0')
bytes_temp=hexStr2bytes(width+height)
if eval(hex(zlib.crc32(bytes1+bytes_temp+bytes2))) == eval(crc32):
print(hex(w),hex(h))
(里面发现了压缩包直接binwalk)
但是压缩包是有错误的,直接猜测是windows截图漏洞,出现flag
Matryoshka
给了一个镜像直接取证大师打开 img
思路通过这些获得encrypt的密钥即可d
010打开并没有其他数据,但是如果010打开normal_rar文件的话可以发现里面包含了一个jpg图片
所以关键是如何提取出来这个图片
binwalk -e normal_rar.rar --run-as=root
只能看出来位置但提取不出来
方法一、一种方式通过dd if=normal_rar.rar of=aaaa.jpg skip=104 bs=1
这种通过第一列 104
可以参考dd命令详解,这里if是指定输入文件,of是指定输出文件,skip是指定从输入文件开头跳过140147个块后再开始复制,bs设置每次读写块的大小为1字节 。
但是如果下面还有分解的元素,就可以用下面这种方法
方法二、通过010删除
第二种方法借助第二列,0x68开始,把前面删除即可
jpg格式的知识
jpg格式文件开始的2字节是图像开始SOI(Start of Image,SOI)为FF D8,之后2个字节是JFIF应用数据块APPO(JFIF application segment)为FF E0 ,最后2个字节是图像文件结束标记EOI(end-of-file)为FF D9 ,如果你想详细了解更多关于这方面的知识,可以参考jpg文件格式分析一文
misc盲水印,二张图片都搞出来了
但是python环境一直报错(比完赛就把python全删了)
【CTF】图片隐写术 · 盲水印 - 双份浓缩馥芮白 - 博客园 (cnblogs.com)
Easy_VMDK
[“小明这次使用了32Bytes的随机密码,这次总不会被爆破出来了吧!!。小明压缩了好了题目后,他发现压缩后大小比压缩前还大啊,这不就没有压缩啊,这是为什么啊!”,“小明这次使用了32Bytes的随机密码,这次总不会被爆破出来了吧!!”]
关于snow隐写的内存取证(来自楚慧杯)
附件:mem.raw
通过直接找出了密码,目前还不知道有啥用先放着
然后通过vol进行内存分析
一般去一个为系统的版本号,然后直接 filescan查询里面所有的文件,grep是linux的命令,windowsfindstr即可
直接findstr查询桌面的,然后 ./说明是当前目录,会生成一个.bat文件,改后缀为.docx即可
打开word文档,空格和回车,snow隐写结合密码
本作品采用CC BY-NC-ND 4.0进行许可。转载,请注明原作者 Azeril 及本文源链接。