2016-11-28 6 views
0

Мой клиент забыл пароль для входа на сервер сайта, который был разработан другим разработчиком, который отказался помочь. Поэтому я пошел в базу данных SQL, чтобы узнать, могу ли я получить пароль прямо оттуда, но кажется, что пароль зашифрован. НижеPHP SSL шифрование пароля

3a0606b25e75eb6c1fed61886844832e

было бы легче, если бы я знал, как пароль был зашифрован, так что я мог бы просто зашифровать новый пароль и добавить к SQL, но когда я посмотрел на код (в смене пароля PHP gile) есть что-то, называемое salt_pass, которое шифрует пароль этого веб-сайта. Смотрите ниже код:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
$db = new database(); 
$option_uw = array(
    "table" => "users", 
    "fields" => "password", 
    "condition" => "id='{$_POST['id']}'" 
); 
$query_uw = $db->select($option_uw); 
$rs_uw = $db->get($query_uw); 
if ($rs_uw['password'] == trim(salt_pass($_POST['oldpassword']))) { 
    $value_pw = array(
     "password" => trim(salt_pass($_POST['pass'])) 
    ); 
    $query_pw = $db->update("users", $value_pw, "id='{$_POST['id']}'"); 

    if ($query_pw == TRUE) { 
     header("location:" . $baseUrl . "/back/user"); 
    } 
}else{ 
    $_SESSION[_ss . 'msg_result'] = TRUE; 
    header("location:" . $baseUrl . "/back/user/changepassword"); 
} 
mysql_close(); 
} 

Вот salt_pass функция

function salt_pass($pass) { 
    return md5("supapongherb.com" . $pass); 
} 

Кто-нибудь знает, как я могу регенерировать или зашифровать новый пароль в соответствии с этим кодом?

PS. веб-сайт разработан с использованием MVC-программирования, и я действительно способен на это. Пожалуйста, дайте мне знать, если вы хотите увидеть больше файлов.

Спасибо заранее!

+2

Посмотрите на синтаксис 'insert', и вы должны выяснить, как был создан пароль. Вероятно, он был хэширован, и вы не сможете де-хэш его, потому что хеширование не шифрует, оно идет только в одну сторону. – chris85

+0

Я только что нашел эту функцию, я не уверен, что делать дальше. Функция salt_pass ($ pass) { return md5 ("supapongherb.com". $ Pass); } – scottymorg

+0

Теперь вы можете создать новый пароль, потому что знаете (устаревший) хэш-алгоритм и соль, которая была использована. Вам даже не нужно делать это PHP. 'update users установить пароль = md5 (concate (" supapongherb.com ", 'NEWPASSWORD')), где userid = ??'. что-то вроде этого – chris85

ответ

5

Давайте проясним несколько вещей до

но мне кажется, что пароль зашифрован

Во-первых, ваш пароль хэшируются, не зашифрованы. There is a difference. А именно, хеши должны быть односторонними. Невозможно посмотреть на хэш и просто восстановить пароль.

Во-вторых, они используют MD5. Они на самом деле ничего не солят, они добавляют одну и ту же строку ко всем паролям и THEN хэшируют ее. MD5 - terrible way to hash because it's stupid easy to break. Это эквивалентно закреплению передней двери с резиновой лентой. Это не безопасно, потому что вы можете сделать миллионов догадок в минуту. Да, это так плохо.

В-третьих, функции и «соль», известной, вы можете легко создать новый пароль таким образом (с помощью SQL, потому что я не догадываясь, какой ненормальный ОРМ они используют там)

UPDATE users 
SET password = MD5(CONCAT('supapongherb.com', 'new_password_here')) 
WHERE id = their_user_id_here 

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

Смежные вопросы