WEB-наводнение Александр Любимов aka Sashiks Хакер, номер #081, стр. 081-070-2 [примитивный флудер] #!/usr/bin/perl use LWP::UserAgent; use HTTP::Request;#этот модуль нам необходим, чтобы создавать «запросы» вида ( метод=>"урл" ); $url="www.sobakoff.net/script.php"; $name="Sashiks";#Это наши данные. которые будут отправляться $email="real_sshx@mail.ru"; $text="Это не флуд! ;)"; $opera=LWP::UserAgent->new();#Создаем новый объект - браузер; $req=new HTTP::Request(POST=>"$url?your_name=$name&email=$email&text=$text");#создаем новый запрос $opera->request($req);#Выполняем запрос, то есть отправку данные скрипту print"Message added!\n'; После запуска этого скрипта в гесте должна появиться наша запись. Чтобы отправить больше сообщений можно просто добавить цикл, где счетчиком будет число необходимых тебе сообщений. Правда просто? Кстати, в Perl есть еше один модуль из семейства HTTP. Он создан специально, если тебе нужно часто работать с web-формами. Подключается он так: use HTTP::Request::Common, а запрос из предыдущего примера реализуется следующим образом: $req=POST('www.sobakoff.net/script.php', [your_name=>'$name', email=>'$email', text=>'$text'] ); Здесь в квадратных скобках мы просто присвоили необходимым параметрам соответствующие значения. [копаем глубже] Разобравшись с основами «затопления» вражеских гестбуков можно перейти к более интересному занятию - изучению форумов и разработки полноценного автономного флудера. Между прочим, за это дело я взялся не зря. А все потому, что мой британский друг Кайл (фанатик юниксов), однажды забрел на сайт www.linuxsucks.org, где ему очень не понравилось тамошнее отношение наглых буржуев к детищу Линуса Торвальдса (да и никсам вообще). Так как сайт по сути представлял собой один большой форум, я тут же получил задание сделать им какую-нибудь пакость - например, до опупения залить их топиками, вроде Kill Bill(Gates) :). Вот такая вот прелюдия. Теперь на примере www.linuxsucks.org мы будем писать нашу программу. Сейчас я расскажу, как я изучал этот форумный движок. Первым делом я, конечно же, зарегался и зашел в раздел discussions. Сайт был построен на php (хотя файлы и были замаскированы апачем под *.html). Я выбрал произвольный топик и стал смотреть сообщения в нем. В самом конце списка ответов была кнопочка AddReply. После нажатия меня перебросило к форме для ответа на пост. Ничего особенного в ней не было - поле для темы, текстовое поле и кнопка для отправки Post. Я заполнил поля какой-то лабудой и нажал на Post, но тут надпись на кнопке изменилась на что-то, вроде «Подождите. Идет обработка» (сама кнопка стала теперь неактивной), и лишь потом мне вывели новую страницу и сообщили, что ответ успешно записан. Мне стало интересно, смогу ли я вернуться и запостить сообщение заново, поэтому в браузере я перешел на страницу назад. Все поля были заполнены и не очистились, но еше раз запостить этот ответ я не мог, потому что кнопка Post так и оставалась неактивной. Вот это первый вид защиты от флудеров. Теперь я решил оставить еще один ответ, и как только мне сообщили, что сообщение добавлено, я тут же вернулся к тому топику и опять нажал AddReply и увидел форму для ответа. Я быстренько ее заполнил и нажал Post. Но теперь на загрузившейся страничке вместо ожидаемого «Ответ успешно записан» появилось предупреждение о том, что запрещено оставлять более одного сообщения в минуту. Как видишь, еще один прием защиты от попадания в форум всякого мусора. Что ж, для начала неплохо, но я знал, что в форме должен был быть еще какой-то трюк, чтоб защититься от флудеров. Так и оказалось. Если просмотреть html-код страницы, то можно увидеть несколько скрытых полей, в которых передавались параметры, среди которых были topictitle (название темы), postid (ID номер топика) и некий неизвестный параметр token. А вот на нем я хочу остановиться поподробнее. Лично мне он напомнил MD5 хэш: <input type="hidden" name=token value="95fcc3baff27ce6c2c3e7afd4303b7cb">. |