记一道ISCTF2022中misc-LSB

发布时间 2023-12-25 15:39:45作者: 张伟文

ISCTF-misc-LSB:

题目描述:这是一道ISCTF2022上面misc里面一道图片隐写题,而且出题人还给了提示,hint:注意大小端问题

题目附件下载下来是一张png的图片

第一步:将图片放进010_editor里面查看一下它的16进制

在数据底部发现了一个zip的压缩包,而且压缩包里面有个flags.txt的文档,然后首先想到的是分离png图片,用foremost分离出来了一个压缩包,解压后里面有个flag的文档,打开后是

![]https://images.cnblogs.com/cnblogs_com/blogs/813633/galleries/2368434/t_231225073013_2.png)

这里一看是一个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}!