Vakar es saņēmu WeChat publiskās platformas avota koda asp.net versiju, ko man atsūtīja draugs.
Šodien es vēlos to atvērt un apskatīt, kas tajā ir, vispirms pievienojiet datu bāzi SQL Server 2008,
Pēc tam atveriet projektu un palaidiet crtl+F5, lai palaistu tīmekļa projektu, kā parādīts šajā attēlā:
Tātad, es nekavējoties pārbaudīju datu bāzes administratora tabulas dt_manager un konstatēju, ka administratora konts ir administrators, bet es nezināju, kāda parole ir šifrēta, galu galā es biju iesācējs
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 Nesaka NULL 0
Vispirms iemet to md5 vietnē, lai to atšifrētu
Mu Jūs to atradāt, izmēģinājāt dažas bieži lietotas paroles, piemēram, 123456, admin, 123, admin888 utt., Bet joprojām nevarējāt pieteikties
Diemžēl, pārbaudīšu asp.net avota kodu un konstatēju, ka tas ir šifrēts šādi:
- 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ēt kodu
Vispārīgi runājot, vispirms tiek spriests, ka lietotāja tabulā ir lietotāja sāls vērtība, un, ja tāda ir, tiek izmantota lietotāja ievadītā parole un no datu bāzes iegūtā sāls vērtība
DESEncrypt šifrēts, (es arī nezinu.)Kas ir DESEncrypt?Pēc tam iemet šifrēto paroli un lietotāju dal. GetMode metode,
Lai spriestu vēlreiz, metodē ir atlases paziņojums, un kods ir šāds:
- /// <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ēt kodu
Es nezinu, kā atšifrēt šo lietu, tāpēc es nomainīšu šifrēto paroli no datu bāzes! Grabuļš
C# paroles vietā iestata pārtraukuma punktu, kā parādīts šajā attēlā:
Gack, šifrēts teksts pēc 123456 šifrēšanas iegūšanas ir EB51565598856A17, un apņēmīgi dodieties uz datu bāzi, lai to aizstātu ar atjaunināšanas paziņojumu
Pieteikšanās veiksmīga!
|