右键解压缩发现压缩包损坏,直接丢到010里面,压缩包里面的文件名是320.zip,文件名长度是7,但是我们在模块的frFileNameLength发现值为3,所以要将文件头的frFileNameLength的值改为7,还要将目录区的frFileNameLength改为7
将以上两处的值该为7之后,我们就可以顺利的打开压缩包,解压出320.zip
再次解压320.zip,发现需要密码,简单尝试一下爆破,发现没有什么效果,这时我们可以看到注释处有提示just a byte,发现是一个嵌套加密的zip,并且密码为一个字节。
知道了压缩方法以及加密算法,直接上破解脚本,爆破可能要花费写时间
import pyzipper
import os
key = b''
for i in range(320,0,-1):
zip_filename = str(i) + ".zip"
zf = pyzipper.AESZipFile(zip_filename, 'r', compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES)
for j in range(0,0xff+1):
password = j.to_bytes(length=1, byteorder='big')
zf.setpassword(password)
try:
zf.extractall()
key += password
zf.close()
os.remove(str(i) + ".zip")
break
except:
pass
print(key[::-1].hex())
爆破出来一个AES-ECB.txt,打开发现一个字符串,提示是key可能已经在之前出现过了,于是我们就用爆破出来的压缩包密码当作key
c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11
爆破密码是循环的64位字符,将其当作key解密AES
c64e5e2225444a9da66b0f28ad718f798cffa70a48124ec5873a610c5899bb11
用加解密工具破解字符串
最终得到flag为DASCTF{514755c6-8280-463c-8378-a29702fc88df}