[DASCTF X CBCTF 2023][misc][wp]SecretZip
1. 打开purezip.zip, 发现加密, 猜测是伪加密, 失败。
2. 后面看了别人的wp, 才明白这个key的作用:key是密钥, 跟secret key.zip是有联系的(同一个单词), 因此这个key文件有可能就是secret key.zip的未加密版本(至少是其中一部分)。
3. 由此采取bkcrack进行破解:
4. 成功求解后, 需要在ARCHPR中的明文攻击子选项卡下输入这三个整数, 从而求得secret key.zip
4.5. 把这个未加密版本的zip和key对比一下, 果然是一样的。
所以才有官方wp的这句话:"key文件内其实是压缩包明文压缩后的前半部分"
5.之后通过爆破找到能成功解密 secret key.zip的两个字节。官方wp的脚本:
import zipfile import libnum from tqdm import trange for i in trange(256): for j in range(256): fz = zipfile.ZipFile('secret key.zip', 'r') password = libnum.n2s(i) + libnum.n2s(j) try: fz.extractall(pwd=password) print(password) fz.close() break except: fz.close() continue else: continue break
得到密码是b'\x9c\x07', 并自动给你解密好了。(这也说明下次遇到不可见字符也可以用上述命令fz.extractall(pwd=password)搞定
6. 解密之后得到e48d3828 5b7223cc 71851fb0.
7. 在zpaq文件的文件尾得到fhe password is md5(the plaintext of the secret key which length is 3 bytes)
由于上面这三段是某个passwd的类crc值, 因此可以通过bkcrack进行还原, 自动逆向还原3字节长的密钥是多少
8. 最后把8be7dc转存为文件, 拿去可以对文件哈希的网站或软件md5一下, 即可拿到解密flag.zpaq的密钥。在bandizip中打开文件并输入即可。