Hacker's PHP

Xakep, номер #043, стр. 043-046-1


Никита Кислицин aka Nikitos (nikitoz@fromru.com)

PHP. Чудесный язык, неправда ли? Но, как в любом другом случае, он может быть применен и на благо общества, и на благо злоумышленника. Помимо взлома сайтов при помощи бажных PHP-скриптов, остается актуальным и использование при помощи интерпретатора PHP мощностей удаленного сервера, который, сам понимаешь, не на диалапе висит.

Ниже пойдет речь об использовании этих самых мощностей на твое собственное, хакерское усмотрение, а именно: накрутка голосований, выкачивание файлов с удаленного сервера, сканирование портов, флуд e-mail, рассылка спама и т.п.

Разумеется, для проведения экспериментов тебе потребуется хостинг с поддержкой PHP и возможностью соединения локальных сокетов с удаленными. Все это можно либо купить по cc (почитай УК! =)), либо достать на халяву у буржуев (в рунете я достойных предложений пока не встречал, если, конечно, не считать таковым rusonix.ru =)). Начнем с самого простого, а именно - сканирования портов.

Сканим порты

Я более чем уверен, что большинству наших читателей хоть раз приходилось сканировать порты. Хотя бы в поисках Back Orifice'а по адресу 127.0.0.1 ;) (по умолчанию он открывает 31337-й порт). А задумывался ли ты, как этот самый портсканер работает? Верно, в большинстве случаев просто тупой коннект на порт. Есть коннект - порт открыт, нет - закрыт.

Аналогичным образом будет работать и наш с тобой сканер портов:

<?

if(isset($submit))

{

$bufer="Открытые порты на $host:\n<br>\n"; //Создаем строку, куда будут дописываться порты

$port=split(" ", $ports); //режем $ports в массив по пробелам

$cc=count($port);

$cc--;

for($i=0; $i<=$cc; $i++) //цикл через весь массив

{

$connect=fsockopen("$host", $port[$i]); //попытка коннекта

if($connect) //Если коннект удался, дописываем в $bufer номер порта

{

$bufer.="$port[$i]\n<br>\n";

}

}

echo "$bufer";

} else {

echo "<form action=port.php>Host: <input type=text name=host><br>Ports: <input type=text name=ports><br><br>

<input type=submit name=submit></form>";

}

?>

Как видишь, у скрипта две входные переменные: хост и порты. Порты загонятся в поле формы через пробел; если тебе это кажется неудобным, можно их хранить в текстовом файле (см. ниже информацию по используемым в скриптах php-функциям).

Mail flood

Тема весьма актуальная. Особенно учитывая то несметное количество уродцев, которое бороздит Инет с единственной целью: облить все и вся калийными массами, низвергающимися с кончиков их бледных пальцев. Меры противодействия? Подсунуть "фотографию" mashenka.jpg.exe, поглумиться через javascript, в конце концов - просто убить мыло. Но засерать мыльник со своего компа, пользуя специальный софт, - неэффективно, медленно и, в общем-то, небезопасно. Куда круче все делать с сервака - через широкий канал с офигенной скоростью, для чего был написан следующий скрипт:

<?

$nn=10;

$nn--;

if(!isset($i))

{ $i=1; }

if($i<=31337)

{

$b=$i;

$b+=$nn;

while($i<=$b)

{

mail("lame@lamo.ru", "Удостоверение $i", "<H1><center><b>У Д О С Т О В Е Р Е Н И Е № $i </b></h1></center><br><br>\r\nВыдано Иннокентию Васильевичу в том, что он является наитупейшим придурком во всем российском Интернете.", "From: LohoKiller $i");

Содержание  Вперед на стр. 043-046-2