Eilen sain ystäväni lähettämän asp.net version WeChatin julkisen alustan lähdekoodista.
Tänään haluan avata sen ja katsoa, mitä siinä on, ensin liittää tietokanta SQL Server 2008:aan,
Avaa sitten projekti ja suorita crtl+F5 web-projektin käynnistämiseksi, kuten seuraavassa kuvassa näkyy:
Tarkistin heti tietokannan dt_manager ylläpitäjän taulukon ja huomasin, että ylläpitäjätili oli ylläpitäjä, mutta en tiennyt, mikä salasana oli salattu, olinhan kuitenkin aloittelija
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 Ei kerro NULL 0
Ensin laita se md5-sivustolle purkaaksesi sen
Mu Löysit sen, kokeilit muutamia yleisesti käytettyjä salasanoja, kuten 123456, admin, 123, admin888 jne., mutta et silti kirjautunut sisään
Valitettavasti tarkistan asp.net lähdekoodin ja huomaan, että se on salattu seuraavasti:
- 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);
- }
Kopioi koodi
Yleisesti ottaen arvioidaan ensin, että käyttäjällä on suolaarvo käyttäjätaulukossa, ja jos on, käytetään käyttäjän syöttämää salasanaa ja tietokannasta saatua suolaarvoa
DESEncrypt salattu, (en minäkään tiedä.)Mikä on DESEncrypt?Sitten laita salattu salasana ja käyttäjä daliin. GetMode-metodi,
Arvioidakseni jälleen, metodissa on select-lause, ja koodi on seuraava:
- /// <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;
- }
Kopioi koodi
En tiedä, miten tämän salauksen puretaan, joten vaihdan salatun salasanan tietokannasta! Helinä
C# asettaa katkopisteen salasanan paikalle, kuten seuraavassa kuvassa näkyy:
Voi hyvänen aika, salattu teksti 123456 salauksen jälkeen on EB51565598856A17, ja mene tietokantaan korvaamaan se päivityslauseella
Kirjautuminen onnistui!
|