第四届网鼎杯 白虎组 Misc04 WriteUP
网鼎杯白虎组的题目强度还是挺大的 只做出来一道misc4 这里分享一下过程
2
暴力破解压缩包 获取更多线索
当我们打开另一个压缩包 发现需要解压密码才可以打开

查看压缩包注释!@#QQQ0010flag**** 猜测为压缩包密码线索
其中后四位被隐藏 猜测为纯数字 于是我们尝试爆破
使用Python生成词典:
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")得到以下内容:
!@#QQQ0010flag0000
!@#QQQ0010flag0001
!@#QQQ0010flag0002
!@#QQQ0010flag0003
!@#QQQ0010flag0004
!@#QQQ0010flag0005
...
!@#QQQ0010flag9998
!@#QQQ0010flag9999导入词典 进行暴力破解:

成功得到压缩包密码!@#QQQ0010flag8456
3
修复图片数据 获取flag
解压压缩包 我们得到一张新的图片
通过foremost工具分离 得到新的一张PNG格式图片

打开图片 发现像素点乱码 并且拥有大块空白像素
并且许多常用的处理图片的工具都无法正常打开

猜测图片格式中有数据出错 尝试使用TweakPNG工具打开

发现报错CRC 猜测图片的CRC数据不正确
根据TweakPNG 工具提供的报错信息 尝试修复CRC

0xd370e9a1 -> 0x3b2dd73a 发现依旧如此
CRC数据正常 猜测为图片长宽高数据被修改导致文件错误
使用CRC逆向 得出图片真正的长宽高:
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))运行脚本,得出图片真正的长宽高:
620 92
hex 0x26c 0x5c根据真实长宽高数据 使用WinHex工具修改 得到前半段flag:



至此 白虎组的 Misc04题目 已成功解出
Last updated
Was this helpful?





