这个关于拉链炸弹的问题自然地引导我到了关于该主题的维基百科页面。本文提到了一个 45.1 kb zip 文件的示例,该文件解压缩为 1.3 艾字节。
首先创建此类文件的原则/技术是什么?我实际上不想这样做,我更感兴趣的是对所涉及概念的简化“东西如何工作”的解释。
文章提到了 9 层 zip 文件,因此这不是压缩一堆零的简单情况。为什么是 9 个,为什么每个有 10 个文件?
引自维基百科页面:
Zip 炸弹的一个例子是文件 45.1.zip 是 45.1 KB 的压缩数据,包含 9 个 嵌套 zip 文件的层数 10、各底层存档 包含 1.30 GB 的文件 总共 1.30 艾字节未压缩 数据。
因此,您所需要的只是一个全是零的 1.3GB 文件,将其压缩为 ZIP 文件,制作 10 个副本,将其打包为 ZIP 文件,然后重复此过程 9 次。
通过这种方式,您将获得一个文件,该文件在完全解压后会产生大量数据,而无需您从该数据量开始。
此外,嵌套的档案使得病毒扫描程序(这些“炸弹”的主要目标)等程序更难聪明地拒绝解压“太大”的档案,因为直到最后一层为止,数据总量没那么多,直到达到最低级别时,您才“看到”最低级别的文件有多大,并且每个单独的文件都不是“太大” - 只有巨大的数字才有问题。
创建一个 1.3 艾字节的零文件。
右键单击>发送到压缩(zipped)文件夹。
这可以在 Linux 下使用以下命令轻松完成:
dd if=/dev/zero bs=1024 count=10000 | zip zipbomb.zip -
将 count 替换为您要压缩的 KB 数。上面的示例创建了一个 10MiB 的 zip 炸弹(根本不是一个炸弹,但它显示了过程)。
您不需要硬盘空间来存储所有未压缩的数据。
以下适用于 Windows:
从安全焦点概念证明(NSFW!)来看,它是一个包含 16 个文件夹的 ZIP 文件,每个文件夹又包含 16 个文件夹,如下所示(42 是 zip 文件名):
“\lib 0 ok