Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2017-02-24 00:10:18

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Пароль администратора

Всем привет!

Давно не заходил на свой форум, забыл пароль администратора, можно его как-то вытянуть из базы MySQL ?  hmm

Offline

#2 2017-02-24 08:23:26

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Пароль администратора

@wst, нет.
Восстанавливаете пароль стандартными средствами форума.
или
Регистрируете нового юзера с нужным паролем. Идете в PhpMyAdmin и в таблице users форума копируете поле password из этого юзера в админа. Заходите под админом с этим паролем на форум и удаляете юзера.

Offline

#3 2017-02-24 08:57:39

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: Пароль администратора

А можно как-то сделать чтобы пароли хранились в базе в открытом виде, в смысле без md5 ?

Offline

#4 2017-02-24 09:13:24

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Пароль администратора

@wst, нельзя пароли хранить в базе в открытом виде!!!
Из года в год придумывают новые алгоритмы хеширования, чтобы усложнить нахождение коллизий при подборе паролей, а вы решили в открытом виде пароли хранить.
md5 давно уже не рекомендуют использовать для хеширования паролей, так же как и sha1 (гугл выложил алгоритм нахождения коллизий для этой функции).

Offline

#5 2017-02-24 09:37:50

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: Пароль администратора

Но в качестве теста можно такое реализовать ? Я так понимаю за это отвечает кусок кода в register.php

Offline

#6 2017-02-24 11:36:10

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Пароль администратора

@wst, не только. По коду следует искать переменную с частью имени password (например: $password1, $form_password) и функцию pun_hash() обрабатывающую такую переменную.
Код придется менять в functions.php, login.php, register.php, profile.php. Возможно еще где.

Offline

#7 2017-02-24 12:14:07

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: Пароль администратора

А на что менять эту функцию ? Вот допустим была тема, тут меняли алгоритм шифрования с SHA1 на MD5 https://fluxbb.qb7.ru/forum/viewtopic.php?id=3592

но если в том случае функция оставалась неизменна, то мне же как я понимаю надо вместо pun_hash() использовать что-то иное ?  hmm

Offline

#8 2017-02-24 13:10:27

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Пароль администратора

@wst, ее надо удалить там, где речь идет о паролях и вычислении хешей к ним.

Offline

#9 2017-02-24 15:47:16

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: Пароль администратора

Ну с register.php и profile.php разобрался, а вот с login.php чёт не очень, там такие конструкции выстроены...  hmm

Может мне кто-нибудь пояснить, я не понимаю, код в login.php со строки 41:

	if (!empty($cur_user['password']))
	{
		$form_password_hash = $form_password; // Will result in a SHA-1 hash
		// If there is a salt in the database we have upgraded from 1.3-legacy though haven't yet logged in
		if (!empty($cur_user['salt']))
		{
			$is_salt_authorized = $cur_user['password'];
			if ($is_salt_authorized) // 1.3 used sha1(salt.sha1(pass))
			{
				$authorized = true;
				$db->query('UPDATE '.$db->prefix.'users SET password=\''.$form_password_hash.'\', salt=NULL WHERE id='.$cur_user['id']) or error('Unable to update user password', __FILE__, __LINE__, $db->error());
			}
		}
		// If the length isn't 40 then the password isn't using sha1, so it must be md5 from 1.2
		else if (strlen($cur_user['password']) != 40)
		{
			$is_md5_authorized = $cur_user['password']; // Visman
			if ($is_md5_authorized)
			{
				$authorized = true;
				$db->query('UPDATE '.$db->prefix.'users SET password=\''.$form_password_hash.'\' WHERE id='.$cur_user['id']) or error('Unable to update user password', __FILE__, __LINE__, $db->error());
			}
		}
	}
	if (!$authorized)
		$errors[] = $lang_login['Wrong user/pass'];
	flux_hook('login_after_validation');

Как я понимаю чтоб снять проверку хеша, надо код заменить примерно на такой:

$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
    $myrow = mysql_fetch_array($result);
    if (empty($myrow['password']))

Просто не особо разбираюсь в PHP... sad

Редактировался wst (2017-02-24 23:10:29)

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens