最近看到资料有说到ZIP炸弹,主要在存在上传功能且对上传文件有解压动作的地方,如果校验不严,可能导致压缩炸弹,导致消耗CPU导致宕机

1、生成ZIP炸弹:

https://github.com/CreeperKong/zipbomb-generator

python3 zipbomb.py --mode=quoted_overlap --num-files=250 --compressed-size=21179 > zbsm.zip

–num-files :压缩包包含的文件数量

–compressed-size:文件压缩大小

可以看到生成了一个zbsm.zip的压缩包,其中包含250个约20M大小的子文件,全部解压出来即有5G的大小,如果可以重放,则瞬间可填满硬盘

使用脚本查看解压后的大小:

linux下还可以使用dd命令 以及bzip2命令

2、场景:

有些上传处使用了如:

Java.util.jar.jarfile

Java.util.zip.Zipfile

通过 java.util.zip.ZipEntry.getSize()获取解压后的大小,可使用010editor对zip文件进行编辑:


struct ZIPFILERECORD record 为文件名;
uint frUncompressedSize为解压后的文件大小;

此处我们对uint frUncompressedSize进行修改,可绕过对解压后实际大小的判断:

如,我们修改uint frUncompressedSize大小为111:


利用java.util.zip进行解压后文件大小判断:

(java代码渣,求勿喷)

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.*;
public class Main {public static void main(String[] args) {File mfile = new  File("D:/05-MY-PROGRAM/m_java/zipboom/zbsm.zip");try {ZipFile zipFile = new  ZipFile(mfile);InputStream in=new BufferedInputStream(new FileInputStream(mfile));ZipInputStream zin=new ZipInputStream(in);ZipEntry ze;ze=zin.getNextEntry();System.out.println("ZIP'Size is :" + ze.getSize());}catch (Exception  e){e.getStackTrace();}}
}


3、防御:

对上传zip文件进行文件个数、文件大小等进行判断

另参考:

https://www.bamsoftware.com/hacks/zipbomb/

压缩炸弹(zipbomb)制作(附演示)相关推荐

  1. 45个纯 CSS 实现的精美边框效果【附演示和源码】【下篇】

    边框效果常用来给图片添加照片效果或用于增强页面内容片断的整体性,在一些团购网站和使用瀑布流布局的网站也经常会使用边框效果.在以前,简单的边框效果使用 CSS 可以轻松实现,但是用到阴影.弯曲和旋转等复 ...

  2. 一网打尽Mac上的高效工具 - 效率工作篇(附演示视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  3. php简单富文本,JavaScript_Javascript实现简单的富文本编辑器附演示,复制代码 代码如下: span styl - phpStudy...

    Javascript实现简单的富文本编辑器附演示 富文本编辑器 编辑区 字体颜色: Black Red Green Blue 字体样式: Bold Italic Underline StriketTh ...

  4. DVD压缩碟简单制作

    VD压缩碟简单制作 作者:王强    来源:家用电脑    投递者: gongxd      [2007-12-27 20:55]      阅读:人 顶一下 笔者的家人是个电脑盲,但是听说网上可以下 ...

  5. 舔狗日记网站源码—附演示站点

    舔狗日记网站源码-附演示站点 今天我还是照常给你发消息,汇报日常工作,你终于回了我四个字:"嗯嗯,好的"你开始愿意敷衍我了,我太感动了受宠若惊.我愿意天天给你发消息.就算你天天骂我 ...

  6. matlab交互式gui,利用MATLAB的GUI功能制作交互式演示实验软件

    第19卷第2期 大 学 物 理 实 验 V ol.19N o.22006年6月出版PHY SIC A L EXPERI ME NT OF C O LLEGE Jun.2006收稿日期:2006-02- ...

  7. KVG制作-【Arduino指纹解锁 智能家居系列-01】DIY自制的智能门禁,AS608指纹解锁+红外线遥控解锁。附演示视频。

    DIY自制的智能门禁,指纹解锁+红外线遥控解锁. DIY自制的智能门禁,指纹解锁+红外线遥控解锁. 材料准备 库文件 代码 注册指纹的代码 **寻找指纹并解锁** 视频演示地址 DIY自制的智能门禁, ...

  8. 如何用课件制作工具演示面积一定的矩形

    作为数学老师必备的课件制作工具,几何画板不仅可以画固定形状的几何图形,还可以构造变换的几何图形.比如可以用它来演示面积一定的矩形,那就说明矩形的长和宽是可以变化的,可以看到矩形的形状是变化的.下面就一 ...

  9. 如何用课件制作工具演示长方形展开动画

    认识长方体与正方体的展开图,是促进学生空间观念发展的一项重要内容,也是学生学习长方体.正方体表面积等知识的基础.在学习这部分内容时,对学生的空间观念要求比较高,有些学生会感到困难,所以我们要借助辅助工 ...

最新文章

  1. CentOS6.9编译安装Nginx1.12
  2. Windows下SVN服务器的搭建步骤
  3. [css] 用css实现一个等腰三角形的小图标
  4. WebApp 开发中常用的代码片段
  5. java单双引号的区别
  6. 扫地机器人作文说明文提纲_考后想要估分的同学,考研英语作文评分标准
  7. 基于visual Studio2013解决C语言竞赛题之1071打印工资
  8. 那些让人惊叹的命令执行效果
  9. 【生信进阶练习1000days】day6-OrganismDb packages
  10. 【航模】凤凰模拟器安装
  11. 测试用例方法----正交试验(实验)设计法(黑盒)
  12. 2012 苹果第三代iPad3(NewPAD)发布会图文实录
  13. “我祝你不幸并痛苦”,首席大法官说了番狠话却被追捧刷屏
  14. FlashPaper 2 API 中文版
  15. Android lua编辑工具,Lua脚本编辑器
  16. AutoInteger中的incrementAndGet 和 getAndIncrement
  17. G. Minimal Coverage(dpdd)
  18. 4.10 单元格内容的隐藏和保护 [原创Excel教程]
  19. Ad Hoc网络路由协议
  20. 什么是股指期货做空(股票期货做空是什么意思)

热门文章

  1. 直面恐惧,战胜自我~
  2. PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用——PHP SDK中Demo程序简析
  3. Transformer与注意力机制
  4. java中mvc模式是什么_什么是MVC模式 MVC模式中三者之间关系
  5. 计算机网络组建对等网,计算机网络实验二组建WINDOWS环境下的对等网并共享资源.pdf...
  6. PostgreSQL用sql求中位数、众数和平均数
  7. 雷军主题演讲:未来10年是移动互联网的天下
  8. APP与后台通信数据格式的演进:从文本协议到二进制协议
  9. DNS 服务器学习总结
  10. 《果然新鲜》电商项目(36)-SSO单点登录(集成SSO认证服务)