Gestern habe ich die asp.net Version des Quellcodes der öffentlichen WeChat-Plattform erhalten, die mir ein Freund zugeschickt hat.
Heute möchte ich es öffnen und mir anschauen, was darin ist, zuerst die Datenbank an SQL Server 2008 anhängen.
Dann öffnen Sie das Projekt und führen crtl+F5 aus, um das Webprojekt auszuführen, wie in der folgenden Abbildung dargestellt:
Also überprüfte ich sofort die Administratortabelle dt_manager der Datenbank und stellte fest, dass das Administratorkonto Admin war, aber ich wusste nicht, welches Passwort verschlüsselt war, schließlich war ich Anfänger
1 1 1 admin 77F992940A0EFD8025F5571B133BA6D5 28LH48 Superadmin 13800138000 123@qq.com 0 2013-12-04 01:53:36.000 1000000 0 888 12 186 Sagt dir nicht NULL 0
Zuerst in die md5-Website einfügen, um sie zu entschlüsseln
Mu You hat es gefunden, einige häufig verwendete Passwörter ausprobiert, wie 123456, admin, 123, admin888 usw., konnte mich aber trotzdem nicht anmelden
Leider werde ich asp.net Quellcode überprüfen und feststellen, dass er wie folgt verschlüsselt ist:
- 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 kopieren
Allgemein wird zunächst beurteilt, dass in der Benutzer-Tabelle ein Saltwert des Benutzers vorhanden ist, und falls ja, werden das vom Benutzer eingegebene Passwort und der aus der Datenbank erhaltene Salzwert verwendet
DESEncrypt verschlüsselt (ich weiß es auch nicht).Was ist DESEncrypt?Dann wirf du das verschlüsselte Passwort und den Nutzer in den Dal. GetMode-Methode,
Um erneut zu urteilen, gibt es eine select-Anweisung in der Methode, und der Code lautet wie folgt:
- /// <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 kopieren
Ich weiß nicht, wie man das entschlüsselt, also ersetze ich das verschlüsselte Passwort aus der Datenbank! Rassel
C# setzt einen Bruchpunkt an der Passwortstelle, wie in der folgenden Abbildung gezeigt:
Gack, der Chiffretext wird nach 123456 Verschlüsselung EB51565598856A17 und geht entschlossen in die Datenbank, um ihn durch die Update-Anweisung zu ersetzen
Anmeldung erfolgreich!
|