I går modtog jeg den asp.net version af WeChats offentlige platform-kildekode, som en ven havde sendt til mig.
I dag vil jeg åbne den og kigge på, hvad der er i den, først vedhæfte databasen til SQL Server 2008,
Åbn derefter projektet og kør crtl+F5 for at køre webprojektet, som vist i følgende figur:
Så jeg tjekkede straks administratortabellen dt_manager databasen og fandt ud af, at administratorkontoen var admin, men jeg vidste ikke, hvad adgangskoden var krypteret, jeg var trods alt begynder
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 Siger ikke NULL 0
Først smid den ind på md5-hjemmesiden for at dekryptere den
Mu You fandt det, prøvede nogle almindeligt brugte adgangskoder, såsom 123456, admin, 123, admin888 osv., men kunne stadig ikke logge ind
Ak, jeg tjekker asp.net kildekode og finder ud af, at den er krypteret som følger:
- 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);
- }
Kopier kode
Generelt vurderes det først, at der er en saltværdi for brugeren i brugertabellen, og hvis der er, bruges den adgangskode, brugeren indtaster, samt saltværdien fra databasen
DESEncrypt krypteret, (jeg ved det heller ikke.)Hvad er DESEncrypt?Derefter smider du den krypterede adgangskode og brugeren ind i dalen. GetMode-metoden,
For at bedømme igen er der en select-sætning i metoden, og koden er som følger:
- /// <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;
- }
Kopier kode
Jeg ved ikke, hvordan man dekrypterer det her, så jeg erstatter den krypterede adgangskode fra databasen! Rassel
C# sætter et brudpunkt på adgangskodestedet, som vist i følgende figur:
Gack, chifferteksten efter at have fået 123456 kryptering er EB51565598856A17, og gå beslutsomt til databasen for at erstatte den med opdateringssætningen
Login lykkedes!
|