Hier, j’ai reçu la version asp.net du code source de la plateforme publique WeChat envoyée par un ami.
Aujourd’hui, je veux l’ouvrir et jeter un œil à ce qu’il contient, d’abord attacher la base de données à SQL Server 2008,
Ensuite, ouvrez le projet et exécutez crtl+F5 pour exécuter le projet web, comme montré dans la figure suivante :
J’ai donc immédiatement vérifié la table administrateur dt_manager de la base de données et j’ai découvert que le compte administrateur était administrateur, mais je ne savais pas quel mot de passe était chiffré, après tout, j’étais débutant
1 1 1 admin 77F992940A0EFD8025F5571B133BA6D5 28LH48 Super admin 13800138000 123@qq.com 0 2013-12-04 01:53:36.000 1000000 0 888 12 186 Ne vous dit pas NULL 0
Commencez par le mettre sur le site md5 pour le déchiffrer
Mu Tu l’as trouvé, essayé quelques mots de passe couramment utilisés, comme 123456, admin, 123, admin888, etc., mais tu n’arrivais toujours pas à te connecter
Hélas, je vais vérifier asp.net code source et je constate qu’il est chiffré comme suit :
- 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);
- }
Code de copie
De manière générale, on juge d’abord qu’il y a une valeur de sel de l’utilisateur dans la table utilisateur, et si c’est le cas, le mot de passe saisi par l’utilisateur ainsi que la valeur de sel obtenue dans la base de données sont utilisés
DESEncrypt chiffré, (je ne sais pas non plus.)Qu’est-ce que DESEncrypt ?Ensuite, il faut insérer le mot de passe chiffré et l’utilisateur dans le dal. Méthode GetMode,
Pour juger à nouveau, il y a une instruction select dans la méthode, et le code est le suivant :
- /// <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;
- }
Code de copie
Je ne sais pas comment déchiffrer ce truc, alors je vais remplacer le mot de passe chiffré de la base de données ! Rattle
C# définit un point d’arrêt dans le lieu du mot de passe, comme montré dans la figure suivante :
Gack, le texte chiffré après avoir obtenu 123456 chiffrement est EB51565598856A17, et il va décisivement dans la base de données pour le remplacer par l’instruction update
Connexion réussie !
|