扫描文件 获取隐藏信息
首先,我们下载附件 得到三个未知文件
使用Binwalk
工具扫描文件1
得到以下内容:
其中解压1A5E6.zip
得到后半段flag 如下所示
水平翻转(镜像):
暴力破解压缩包 获取更多线索
当我们打开另一个压缩包 发现需要解压密码才可以打开
查看压缩包注释!@#QQQ0010flag****
猜测为压缩包密码线索
其中后四位被隐藏 猜测为纯数字 于是我们尝试爆破
使用Python生成词典:
Copy dic = "!@#QQQ0010flag****"
with open("output.txt", "w") as file:
for i in range(10000):
rep = dic.replace("****", str(i).zfill(4))
file.write(rep + "\n")
print("success")
得到以下内容:
Copy !@#QQQ0010flag0000
!@#QQQ0010flag0001
!@#QQQ0010flag0002
!@#QQQ0010flag0003
!@#QQQ0010flag0004
!@#QQQ0010flag0005
...
!@#QQQ0010flag9998
!@#QQQ0010flag9999
导入词典 进行暴力破解 :
成功得到压缩包密码!@#QQQ0010flag8456
修复图片数据 获取flag
解压压缩包 我们得到一张新的图片
通过foremost
工具分离 得到新的一张PNG格式图片
打开图片 发现像素点乱码 并且拥有大块空白像素
并且许多常用的处理图片的工具都无法正常打开
猜测图片格式中有数据出错 尝试使用TweakPNG
工具打开
发现报错CRC
猜测图片的CRC
数据不正确
根据TweakPNG
工具提供的报错信息 尝试修复CRC
0xd370e9a1
-> 0x3b2dd73a
发现依旧如此
CRC数据正常 猜测为图片长宽高数据被修改导致文件错误
使用CRC逆向 得出图片真正的长宽高:
Copy import os
import binascii
import struct
crcbp = open("2.png", "rb").read() #2.png为源文件
for i in range(1024):
for j in range(1024):
data = crcbp[12:16] + struct.pack(">i", i) + struct.pack(">I", j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0xd370e9a1: #图片的CRC信息
print(i, j)
print ("hex",hex(i),hex(j))
运行脚本,得出图片真正的长宽高:
Copy 620 92
hex 0x26c 0x5c
根据真实长宽高数据 使用WinHex工具修改 得到前半段flag:
拼接图片 完成题目
通过两个压缩包解出的flag 拼接 得出完整flag