因为主要是学习明文攻击,所以只做了明文攻击这一步。感谢@2hi5hu师傅的倾囊相授🙏
首先打开zip发现一个.git文件夹一个py文件
首先我们需要看了解两种压缩方法Store和Deflate
Store和Deflate都是无损的压缩方法。
-
Store方法:
特点:Store方法实际上并不对数据进行压缩,而是简单地将数据打包存储。这意味着在存储过程中,数据的原始内容和格式都不会发生改变。
无损性:由于不进行压缩,Store方法自然也不会引入任何数据损失或失真。因此,它是一种完全无损的存储方式。
-
Deflate方法:
算法基础:Deflate是一种使用DEFLATE算法进行压缩的方法。DEFLATE算法结合了Lempel-Ziv-Welch(LZW)压缩算法和哈夫曼编码的特点,能够在保持数据完整性的同时实现高效的压缩。
无损性:作为一种无损压缩算法,Deflate在压缩过程中不会丢失任何原始数据的信息。它通过重新组织和编码数据来减少存储空间的需求,同时确保解压后的数据与原始数据完全一致。
个人经验来说,压缩后大小比原始大小大的为Store,因为其打包存储压缩特点。
而对于明文攻击而言,如果要采用部分明文攻击则必须为Store方法,如果已知完整文件则两种方法都可以。所以明文攻击的条件不只是需要关注加密算法是否是ZipCrypto,还要关注压缩方法以及已知信息(当然还有至少已知明文的12个字节及偏移,其中至少8字节需要连续)
回到这一道题,通过观察我们并不能得到一些常规泄露完整文件的路径,但是我们可以发现在.git路径下的部分文件是采用的Store方法,可以进行部分明文攻击
这里需要一点点熟悉HEAD文件,其内容通常是一个指向另一个引用的路径,或者说是当前所在的工作分支,合理(大胆)推测其内容为
ref: refs/heads/main
准备已知明文
echo -n "ref: refs/heads/main" > Deflate.txt
进行明文攻击
./bkcrack.exe -C deflated.zip -c .git/HEAD -p Deflate.txt
明文攻击成功,经过测试Key也是有效的
最后再次感谢@2hi5hu师傅的倾囊相授🙏
2hi5hu师傅yyds 香香软软的misc✌٩(ˊᗜˋ*)و