Včera som dostal asp.net verziu zdrojového kódu verejnej platformy WeChat, ktorú mi poslal priateľ.
Dnes ju chcem otvoriť a pozrieť, čo v nej je, najprv pripojiť databázu k SQL Server 2008,
Potom otvorte projekt a spustíte crtl+F5, aby ste spustili webový projekt, ako je znázornené na nasledujúcom obrázku:
Takže som okamžite skontroloval administrátorskú tabuľku dt_manager databáze a zistil som, že administrátorský účet je administrátor, ale nevedel som, aké heslo je zašifrované, veď som bol začiatočník
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 Nehovorí ti NULL 0
Najprv ho nahodte na stránku MD5, aby ste ho dešifrovali
Mu Našli ste to, vyskúšali ste niekoľko bežne používaných hesiel, ako napríklad 123456, admin, 123, admin888 a podobne, ale stále ste sa nemohli prihlásiť
Žiaľ, skontroloval som asp.net zdrojový kód a zistil som, že je zašifrovaný nasledovne:
- 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);
- }
Kopírovať kód
Vo všeobecnosti sa najprv posudí, že v používateľskej tabuľke existuje hodnota soli používateľa, a ak áno, použije sa heslo zadané používateľom a hodnota soli získaná z databázy
DESEnCrypt zašifrovaný (ani ja neviem.)Čo je DESEncrypt?Potom zadajte zašifrované heslo a používateľa do dalu. Metóda GetMode,
Ak to chceme posúdiť znova, v metóde je príkaz select, a kód je nasledovný:
- /// <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;
- }
Kopírovať kód
Neviem, ako to dešifrovať, tak nahradím zašifrované heslo z databázy! Hrknutie
C# nastavuje bod zlomu na mieste hesla, ako je znázornené na nasledujúcom obrázku:
Fuj, šifrovaný text po získaní 123456 šifrovania je EB51565598856A17 a rozhodne ísť do databázy, aby ho nahradil update príkazom
Prihlásenie úspešné!
|