Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Проблемы с хэшированием паролей в IPB 3.4.6

Featured Replies

Posted

Приветствую, читатель.

 

При регистрации в IPB используется следующий метод шифрования пароля:

md5 ( md5 ( $salt ) . md5 ( $password ) )

Однако при регистрации пользователя с паролем, в котором содержится символ "!" (т.е. восклицательный знак), зашифрованный пароль не соответствует данному алгоритму.

 

Случай 1.

Пользователь Test1 зарегистрировался с паролем qwerty и солью :l3>% (соль, очевидно, генерируется случайным образом без участия пользователя).

Вышеупомянутая формула дает результат 95be0395c5c598db50ab82d05ccad359.

В таблицу базы данных, хранящей хэши паролей, тоже записывается значение 95be0395c5c598db50ab82d05ccad359.

Проверка с использованием элементарнейшего php-кода подтверждает данный результат.

  $pass = 'qwerty';    
  $salt = ':l3>%';
  $cryptPass = md5( md5($salt) . md5( $pass ) );
  echo $cryptPass;

Случай 2.

Если пользователь Test2 регистрируется с паролем qwe!rty и солью a"J9T, в таблицу заносится значение 101c61df7c8cf10340f98534bbfa3d90.

Однако если мы проведем проверку, используя приведённый выше php-код, то мы получим другое значение - 5c4966345e8b631a1585d78750dadd34.

 

Понятное дело, что метод шифрования не меняется. Очевидно, что из передаваемой строки символ восклицательного знака или изымается, или заменяется на какой-либо другой.

Поэтому возникает вопрос: как с этим бороться?

 

Спасибо.

Поэтому возникает вопрос: как с этим бороться?

А зачем вообще это нужно?

Очевидно, что из передаваемой строки символ восклицательного знака или изымается, или заменяется на какой-либо другой.

Второе.

Однако при регистрации пользователя с паролем, в котором содержится символ "!" (т.е. восклицательный знак), зашифрованный пароль не соответствует данному алгоритму.

Да и не только !. Если бы не заменялись некоторые символы, то это был бы не форум, а "дырка для кулцхакеров".

  • Author

А зачем вообще это нужно?

Второе.

Да и не только !. Если бы не заменялись некоторые символы, то это был бы не форум, а "дырка для кулцхакеров".

У меня есть небольшой игровой проект. Регистрация пользователей происходит на форуме. При входе в игру через игровой клиент происходит обращение к базе. Клиент проверяет пароль по упомянутой мною формуле. Однако если у пользователя в пароле есть восклицательный знак, то проверку пройти не удается.

 

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


В общем, хотелось узнать, какие еще символы заменяются в пароле на другие, и как это можно отключить.
Не нужно это отключать.
$pass = IPSText::parseCleanValue('qwe!rty');    
$salt = 'a"J9T';
$cryptPass = md5( md5($salt) . md5( $pass ) );
  • Author

Не нужно это отключать.

$pass = IPSText::parseCleanValue('qwe!rty');    
$salt = 'a"J9T';
$cryptPass = md5( md5($salt) . md5( $pass ) );

Я благодарен Вам за ответы, но хотелось бы самому решать, что нужно, а что нет)

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

1. Находите класс IPSText

adminsourcesbasecore.php

2. Находите метод parseCleanValue
 


Однако меня все же интересует решение проблемы именно тем способом, который я предложил.
Я Вам дал решение, основанное на Вашем коде. Что в нем не так?
  • Author

 

1. Находите класс IPSText

adminsourcesbasecore.php

2. Находите метод parseCleanValue

 

 

 

Я Вам дал решение, основанное на Вашем коде. Что в нем не так?

 

Пардон, глазами недоучки не смог разглядеть ответа. Спасибо за пояснение, сегодня буду эксперементировать.

  • Author

Нашел строки, отвечающие за подмену символов при регистрации. Расположен этот отрывок в файле adminsourcesbasecore.php

        $val = str_replace( "&"                , "&"         , $val );
        $val = str_replace( "<!--"            , "&#60;&#33;--"  , $val );
        $val = str_replace( "-->"            , "--&#62;"       , $val );
        $val = str_ireplace( "<script"        , "&#60;script"   , $val );
        $val = str_replace( ">"                , "&gt;"          , $val );
        $val = str_replace( "<"                , "&lt;"          , $val );
        $val = str_replace( '"'                , "&quot;"        , $val );
        $val = str_replace( "n"            , "<br />"        , $val ); // Convert literal newlines
        $val = str_replace( "$"                , "&#036;"        , $val );
        $val = str_replace( "!"                , "&#33;"         , $val );
        $val = str_replace( "'"                , "&#39;"         , $val ); // IMPORTANT: It helps to increase sql query safety.

Символы, стоящие в кавычках, заменяются на собственное значение в Юникоде.

Guest
This topic is now closed to further replies.

Последние посетители 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.