Hacker's PHP

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


$i++;

if($i==$b)

{

echo "Отправлено $i писем! Перезапуск скрипта... please wait... <script>location='mail_flood.php?i=$i&'</script>";

}}}

?>

Как несложно заметить, скрипт посылает 10 различных(!) писем, затем перезапускается, посылает еще 10 писем, перезапускается и так далее.

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

Spaming

Спам - вирус XXI века ;). Причем люди (так уж они устроены...) сердятся лишь на виртуальное его проявление - ту же "Экстру М" все с радостью берут :).

Но, ей богу, неприятно обнаружить, что за ночь в ящик накапало 79 тридцатикилобайтовых писем с предложением "Зарабатывать по $10000 в месяц".

Но спам как средство раскрутки сайта стоит не на последнем месте, да и, потом, можно подумать над мирным применением моего скрипта - например, создавать собственные рассылки, не используя оборзевший subscribe.ru. Как бы то ни было, если производить рассылку писем, то с сервака:

<?

$emails=file(spamlist.txt);

$c=count($emails);

if(!isset($i))

{

$i=1;

}

$b=$i;

$b+=9;

while($i<=$c && $i<=$b)

{

mail("$emails[$i]", "Спам", "Йо! Посетите мой мегакульный сайт: www.yo.ru");

if($i==$b)

{

echo "<script>location='script.php?i=$i'</script>";

}

}

?>

Сливаем файлы

Иногда бывает необходимо закачать какой-нибудь большой (или не очень) файл на сайт с другого сервера. Можно, конечно, сперва слить его к себе на комп, а потом upload'ить на сайт по FTP, но в этом случае ты дважды(!) перекачиваешь одну и ту же информацию, что довольно глупо, ведь можно заставить сам сервер скачать нужный тебе файл - без участия твоего компа как такового. Тема заезжена perl-вариантами, а я расскажу, как это делается на PHP:

<?

$socket = fsockopen("127.0.0.1", 80); //коннект

fputs($socket,"GET /cd/1.exe HTTP/1.0\nHOST: cd\n\n"); //запрос

while(fgets($socket,31337)!="\r\n" && !feof($socket)){

unset($buffer); } //отбрасываем заголовок

while(!feof($socket)) $buffer.=fread($socket, 1024); //читаем в переменную файл порциями по 1024 байт

$file_size=strlen($buffer); //считаем длину получившейся строки, т.е. файла

$f=fopen("download.exe","wb+");//собственно, пишем в файл

fwrite($f, $buffer, $file_size);

echo "Size of downloaded file: $file_size<b><br><br>"; //вывод результата

?>

Кстати, часто в локальных сетях в виде бонуса дают бесплатный трафик с провайдерскими pop3 и smtp серверами, а значит имеет смысл при помощи PHP скачивать файл и посылать его на мыло, трафик с которым не учитывается. Таким образом можно получить возможность на халяву качать мегатонные файлы! Правда, в этом случае можно здорово получить по шее от админа сетки, которому, в свою очередь, сильно влетит от начальства за безумный mail-трафик ;). Но еcли сложности тебя не пугают (7 раз подумай, а потом подумай еще раз ;)), то, так уж и быть, расскажу, как прикреплять к письму файлы средствами PHP.

Назад на стр. 043-046-1  Содержание  Вперед на стр. 043-046-3