ISCTF
-misc-LSB
:
题目描述:这是一道ISCTF2022
上面misc里面一道图片隐写题,而且出题人还给了提示,hint:注意大小端问题
题目附件下载下来是一张png
的图片:
第一步:将图片放进010_editor里面查看一下它的16进制:
在数据底部发现了一个zip的压缩包,而且压缩包里面有个flags.tx
t的文档,然后首先想到的是分离png
图片,用foremost分离出来了一个压缩包,解压后里面有个flag的文档,打开后是:
这里一看是一个fakeflag
,是一个错误的flag,看来我们想的还是太简单了,现在把png
图片放进stegsolve
里面看一下图片的数据信息:
这里根据出题人给的提示,然后仔细观察发现这是一个压缩包的字节数据,但是它的每个字节都是反过来的出现了大小端问题,把高位数据写在了低位,低位数据写在了高位,现在把它Save Bin下来,将数据导入到010editor
里面,再将它的16进制导出来进行高位和低位的转换:
编写脚本来将这些16进制进行高低位转换:
# 读取2.txt文件中的数据
with open('D:\桌面\misc-大端小端问题/1.txt', 'r') as file:
data = file.read()
# 将数据进行处理
data_list = data.split() # 按空格分割数据
swapped_data = []
# 对每个十六进制数的顺序进行颠倒
for hex_number in data_list:
swapped_hex = hex_number[::-1] # 颠倒顺序
swapped_data.append(swapped_hex) # 添加到结果列表中
# 写入3.txt文件
with open('D:\桌面\misc-大端小端问题/3.txt', 'w') as file:
file.write(' '.join(swapped_data))
转换后:
再将这些16进制导入进010editor
:
导入后发现它的数据字节就出现了很明显的压缩包文件名PK,再将它另存为.zip的形式,解压后就可以得到flag的txt
文档,打开后就得到了正确的flag。ps
:这里我保存为压缩包的形式解压时出现了错误,我又进行了foremost分离,在分离出的压缩包就可以正常的解压打开得到flag:
最后得到正确的flag:ISCTF{A76510E3-FEA7-68F8-2C31-0A4ECAE5197A}
!