Loading....

HEAD

  • 有一种精神,叫"公诚勤朴"

挣点外快

浏览器GZIP解压缩炸弹(图)
作者: wzhu 时间: 2008-11-14 13:58:39

原理:

现在的主流浏览器一般都支持Gzip格式文件解压缩,所以解压缩炸弹正式利用浏览器的这一功能实现.

具体处理流程如下:

  1. 我们创建一个a.txt文件.该文件的内容全部为"0", 你也可以设置为其他任意字符,但是要保证文件的内容全部由这个字符填充,其目的在于尽可能的提高下一步的压缩比.
  2. 将a.txt文件使用Gzip格式压缩,至于压缩级别,经过我测试,压缩的后的文件其实一样大. 不过这里也有一个问题,那就是如果你采用的压缩比越大,那么将耗费更多的CPU处理压缩,同样在用户的浏览器接受这个炸弹的时候也会耗费更多的CPU解压缩^_^
  3. 使用PHP文件读取压缩后的文件, 发送给用户----注意: 在发送前一定要记得发送一个Content-Encoding: gzip的协议头,告诉用户的浏览器,这个内容是需要解压缩后显示的.

图示过程:

浏览器GZIP解压缩炸弹示意图

PHP脚本:

php的脚本也非常简单,代码如下:

 <?php
header('Content-Encoding: gzip');
$str = file_get_contents('a.txt.gz');
print $str;

测试结果:

理论上这个经过压缩后的在服务器上不到1MB的文件,只占用1MB的带宽, 但是将会占用用户至少500MB的内存.

经过本人测试: 内存直接飙升到1.3个G, CPU直接100%,这个时候浏览器基本上已经Over了 ^_^

演示地址(慎用!):http://www.cncmm.com/demo/081114/gzbomb.php

相关评论
frank 发布于 2008-11-14 19:57:39 IP: 218.24.166.*
我还在咒骂IE呢,原来是你搞的鬼
jake 发布于 2009-11-03 10:34:23 IP: 113.90.34.*
呵呵
不错,测试下
幸好我的机子性能还可以,不然就铁定硬重启了!~~~~
发表评论
姓名:
图码: