昨天收到了一个朋友给我发的asp.net版的微信公众平台源码,
今天想打开看一下,里面都是有啥,先把数据库附加到sql server2008上面去了,
然后打开项目,运行crtl+F5运行web项目,如下图:
于是,我立马查看数据库的管理员表dt_manager,发现管理员帐号是admin,但是密码不知道是什么加密的,毕竟我是初学者嘛
1 1 1 admin 77F992940A0EFD8025F5571B133BA6D5 28LH48 超级管理员 13800138000 123@qq.com 0 2013-12-04 01:53:36.000 1000000 0 888 12 186 不告诉你 NULL 0
先丢进md5网站去解密下
木有找到,试了几个常用的密码,例如123456、admin、123、admin888等等,还是登录不进去
唉,去查看asp.net源代码,发现是加密方式如下:
- 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);
- }
复制代码
大体是先判断用户表中有木有该用户的salt值,如果有的话,把用户输入的密码和从数据库里面得到的salt的值再用
DESEncrypt进行加密的吧,(我也不知道DESEncrypt是个啥玩意)然后,把加密后的密码password和用户丢进dal.GetMode方法里面,
再进行判断,方法里面就是一个select语句,代码如下:
- /// <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;
- }
复制代码
不知道这个玩意咋解密,我就从数据库里面把加密后的密码替换掉吧!嘎嘎
c#在password地方设置断点,如下图:
嘎嘎,得到123456加密后的密文是EB51565598856A17,果断去数据库进行update语句进行替换
登录成功!
|