[DASCTF X CBCTF 2023][misc][wp]SecretZip

发布时间 2023-10-26 19:24:10作者: lynnzixing

 

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中打开文件并输入即可。