Вчера я получил asp.net версию исходного кода публичной платформы WeChat, присланный мне другом.
Сегодня я хочу открыть её и посмотреть, что в ней содержится, сначала подключить базу данных к SQL Server 2008,
Затем откройте проект и запустите crtl+F5, чтобы запустить веб-проект, как показано на следующем рисунке:
Поэтому я сразу проверил таблицу администратора dt_manager базы данных и обнаружил, что аккаунт администратора принадлежит администратору, но я не знал, какой пароль зашифрован, ведь я был новичком
1 1 1 admin 77F992940A0EFD8025F5571B133BA6D5 28LH48 Супер админ 13800138000 123@qq.com 0 2013-12-04 01:53:36.000 10000000 0 888 12 186 Не говорит NULL 0
Сначала вставьте его на сайт md5, чтобы расшифровать
Му: Ты нашёл его, попробовал несколько популярных паролей, таких как 123456, admin, 123, admin888 и т.д., но всё равно не смог войти
Увы, я проверяю исходный код asp.net и обнаруживаю, что он зашифрован следующим образом:
- public Model.manager GetModel(string user_name, string password, bool is_encrypt)
- {
- //检查一下是否需要加密
- if (is_encrypt)
- {
- //先取得该用户的随机密钥
- string salt = dal.GetSalt(user_name);
- if (string.IsNullOrEmpty(salt))
- {
- return null;
- }
- //把明文进行加密重新赋值
- password = DESEncrypt.Encrypt(password, salt);
- }
- return dal.GetModel(user_name, password);
- }
Копирование кода
В общем, сначала оценивают, что в таблице пользователя есть значение соли, и если оно есть, используются пароль, введённый пользователем, и соля, полученное из базы данных
DESEncrypt зашифрован (я тоже не знаю).Что такое DESEncrypt?Затем введите зашифрованный пароль и пользователя в dal. Метод GetMode,
Если судить ещё раз, в методе есть select-оператор, код которого выглядит следующим образом:
- /// <summary>
- /// 根据用户名密码返回一个实体
- /// </summary>
- public Model.manager GetModel(string user_name, string password)
- {
- StringBuilder strSql = new StringBuilder();
- strSql.Append("select id from " + databaseprefix + "manager");
- strSql.Append(" where user_name=@user_name and password=@password and is_lock=0");
- SqlParameter[] parameters = {
- new SqlParameter("@user_name", SqlDbType.NVarChar,100),
- new SqlParameter("@password", SqlDbType.NVarChar,100)};
- parameters[0].Value = user_name;
- parameters[1].Value = password;
- object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
- if (obj != null)
- {
- return GetModel(Convert.ToInt32(obj));
- }
- return null;
- }
Копирование кода
Я не знаю, как расшифровать эту штуку, поэтому заменю зашифрованный пароль из базы данных! Гремчь
C# устанавливает точку остановки в месте пароля, как показано на следующем рисунке:
Гак, шифротекст после 123456 шифрования EB51565598856A17, и решительно зайди в базу данных, чтобы заменить его на оператор обновления.
Вход успешен!
|