Vakar gavau asp.net "WeChat" viešosios platformos šaltinio kodo versiją, kurią man atsiuntė draugas.
Šiandien noriu jį atidaryti ir pažvelgti, kas jame yra, pirmiausia pridėkite duomenų bazę prie SQL Server 2008,
Tada atidarykite projektą ir paleiskite crtl + F5, kad paleistumėte žiniatinklio projektą, kaip parodyta šiame paveikslėlyje:
Taigi, aš iš karto patikrinau administratoriaus lentelę duomenų bazės dt_manager ir radau, kad administratoriaus paskyra yra admin, bet nežinojau, koks slaptažodis yra užšifruotas, juk buvau pradedantysis
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 Nepasako jums NULL 0
Pirmiausia įmeskite jį į md5 svetainę, kad iššifruotumėte
Mu Jūs jį radote, išbandėte kelis dažniausiai naudojamus slaptažodžius, pvz., 123456, admin, 123, admin888 ir kt., bet vis tiek negalėjote prisijungti
Deja, patikrinsite asp.net šaltinio kodą ir nustatysite, kad jis užšifruotas taip:
- 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);
- }
Kopijuoti kodą
Paprastai tariant, pirmiausia sprendžiama, kad vartotojo lentelėje yra vartotojo druskos reikšmė, o jei yra, naudojamas vartotojo įvestas slaptažodis ir druskos vertė, gauta iš duomenų bazės
DESEncrypt užšifruotas, (aš irgi nežinau.)Kas yra DESEncrypt?Tada įmeskite užšifruotą slaptažodį ir vartotoją į dal. GetMode metodas,
Dar kartą sprendžiant galima spręsti, metode yra pasirinktas teiginys, o kodas yra toks:
- /// <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;
- }
Kopijuoti kodą
Nežinau, kaip iššifruoti šį dalyką, todėl pakeisiu užšifruotą slaptažodį iš duomenų bazės! Barškutis
C# slaptažodžio vietoje nustato lūžio tašką, kaip parodyta šiame paveikslėlyje:
Gack, šifruotas tekstas gavus 123456 šifravimą yra EB51565598856A17, ir ryžtingai eikite į duomenų bazę, kad pakeistumėte jį atnaujinimo teiginiu
Prisijungimas sėkmingas!
|