Gisteren ontving ik de asp.net versie van de broncode van het WeChat publieke platform die mij door een vriend was gestuurd.
Vandaag wil ik het openen en kijken wat erin zit, eerst de database koppelen aan SQL Server 2008,
Open vervolgens het project en voer crtl+F5 uit om het webproject te starten, zoals weergegeven in de volgende figuur:
Dus ik controleerde meteen de beheerderstabel dt_manager van de database en zag dat het beheerdersaccount admin was, maar ik wist niet wat het wachtwoord was versleuteld, ik was tenslotte een beginner
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 Vertelt je niet NULL 0
Gooi het eerst in de md5-website om het te ontsleutelen
Mu Je hebt het gevonden, een paar veelgebruikte wachtwoorden geprobeerd, zoals 123456, admin, 123, admin888, enzovoort, maar kon nog steeds niet inloggen
Helaas ga ik asp.net broncode controleren en ontdekken dat deze als volgt versleuteld is:
- 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 kopiëren
Over het algemeen wordt eerst geoordeeld dat er een saltwaarde van de gebruiker in de gebruikerstabel staat, en als die er is, worden het door de gebruiker ingevoerde wachtwoord en de saltwaarde uit de database gebruikt
DESEncrypt versleuteld, (ik weet het ook niet.)Wat is DESEncrypt?Gooi vervolgens het versleutelde wachtwoord en de gebruiker in de dal. GetMode-methode,
Om opnieuw te beoordelen, is er een select-uitspraak in de methode, en de code is als volgt:
- /// <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 kopiëren
Ik weet niet hoe ik dit ding moet ontsleutelen, dus ik vervang het versleutelde wachtwoord uit de database! Rammelaar
C# stelt een breekpunt in op de wachtwoordplaats, zoals weergegeven in de volgende figuur:
Gack, de ciphertext na het krijgen van 123456 encryptie wordt EB51565598856A17 en gaat resoluut naar de database om deze te vervangen door de update-instructie
Login geslaagd!
|