首页 > 编程知识 正文

相等子串hash碰撞,hash256补丁

时间:2023-05-03 09:16:43 阅读:9433 作者:4479

php hash碰撞攻击和防御(旋转) )。

发布时间: 2021-03-18 12:42:14阅读(583 ) )。

一、前言

hash冲突攻击是指构建恶意数据。 混列表退化为链表,每次插入数据时都遍历链表,消耗大量服务器资源达到攻击目的。 php的数组是利用hash表实现的,对于冲突的数据,php采用双向链表解决方案,因此可以利用php的数组进行hash冲突攻击。

二.模拟攻击

许多接口以json数据格式传输。 php通常使用php:input检索数据流,并使用json_decode分析json数据。 例如,$ JSON=file _ get _ contents (PHP ://input );

$arr=JSON_decode($JSON,true );

var_dump($arr;

容易被利用这种混列冲突攻击,导致cpu资源枯竭。

接下来,我们来看看构建65536个元素的常规数组和恶意数组所需的时间。

编写要写入$ size=pow (2,16 )的test.php脚本。

$arr=[];

$开始时间=microtime (true );

for($I=0,$k=0; $i

$arr[$k]=0;

}

$endtime=microtime(true );

echo '恶意插入{$size}个元素需要时间',$endTime-$startTime,' sn ';

file_put_contents('./hash.JSON ',JSON_encode ) $arr );

$arr=[];

$开始时间=microtime (true );

for($I=0; $i

$arr[$i]=0;

}

$endtime=microtime(true );

echo '需要花费时间才能成功插入{$size}个元素',$endTime-$startTime,' sn ';

首先在php5.6上运行此脚本。

从上图可以看出,需要时间。

然后在php7上运行此脚本。

从上图可以看出,php7比php5.6更花时间。 这是因为php7优化了hash表的结构和算法,大大提高了性能。 但是,恶意插入比正常插入要花更多的时间。

再写一个简单的界面,利用刚才生成的恶意数据模拟攻击,同时利用top命令看看系统资源的消耗。

脚本: $ JSON=file _ get _ contents (PHP ://input );

$开始时间=microtime (true );

$arr=JSON_decode($JSON,true );

$endtime=microtime(true );

分析echo '数据需要时间',$endTime-$startTime,' sn ';

攻击前的系统资源使用情况:

然后使用curl模拟攻击。

同时使用top命令显示:

可以看到cpu资源已耗尽,但这仍然是一个请求,使用ab压力测试会导致cpu资源长时间耗尽。

可以使用以下命令进行模拟: a B- n 1000-c100-s 1000-p './hash.JSON ' 3358127.0.0.1/test2. PHP

可以看到cpu一直是100%。 要停下来,只能重新启动php-fpm。 服务PHP-fpm restart

关于hash冲突攻击的原理,网上有很多,所以我不详细说,我来说明防御方法。

三. hash冲突攻击的防御

其实,不仅是json_decode,与数组相关的人也有这个问题。 例如,GET/POST/COOKIE就有这个问题。

GET/POST/COOKIE可以通过设置max_input_vars来解决。 打开php.ini文件,找到此位置,然后更改值。 默认大小为1000。

关于json_decode这个问题,通常很容易在接口上受到攻击。

所以通常用以下方法解决:

1、数据加密传输,家里的APP应用接口可以采用对称加密,因为加密和解密的速度很快。 对第三方开放的接口可以使用非对称加密。 添加加密的速度没有对称加密快,但更安全。

2、使用$ JSON=file _ get _ contents (PHP ://input ); 获取数据后,检查数据长度,根据业务特点确定最大长度,超过此长度后报告错误。

3、也可以不将接收到的数据转换为数组而转换为json对象。 也就是说,json_decode (函数不应将第二个参数设置为true

4、使用php7以上版本,php7与php5相比性能有很大提高。

————————————————

这是CSDN博客“赵杨_ 1214”的原创文章,符合CC 4.0 BY-SA版权协议。 请附上原文来源的链接和本声明。

原文链接: https://blog.csdn.net/u 014691098/article/details/84676753

标签:

php

如果对你有用的话,我给你奖励吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。