安恒杯 misc猫片
这是一道十分绕的题目,但是做不出来说明确实是我自己太菜了,又学到了点做题的方法,这里总结一下。
下载这个文件,用binwalk分析了一下,发现并没有隐藏在里面的东西,改文件后缀名称为.png,发现一张图片
我们对它用stegsolve打开,也没有发现更多的信息,看到了提示里面有LSB BGR.
LSB:MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。
BGR:和RGB有点儿区别,也是一种色彩体系
正好在stegsolve 似乎见到过这几个参数,打开后发现:
发现了一张png图片,复制到Notepad++里面,复制出来然后到hxd生成图片,得到一张二维码
由于显示的不全,所以用tweak工具打开,然后进行脚本跑,得到正确的高度
import os
import binascii
import struct
misc = open("2.png","rb").read()
for i in range(1024):
data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x286c213a:
print (i)
得到高度280,然后进行扫码,但是得到的二维码是个色彩反着的,用画图工具反色(ctrl+shift+i)改回来。
得到:
扫码得到一个盘的信息,有一个压缩包,解压还出错了,看到了flag.txt,最后还是不在txt里,看到了最后一个提示,搜了一下竟然存在ntfs隐写,下载工具Ntfs Streams Editor
用Ntfs Streams Editor对解压的数据进行过滤,一定要用WinRAR解压,不然没有效果
导出所选文件,然后进行python的反编译
安装 python uncompyle6 库,在cmd下执行命令:
uncompyle6 -o . flag.pyc
注意的是,-o 后面有个点儿,而且生成的py文件会没有注释的内容,得到脚本