0x00 背景
最近在给一家教育机构 做网站的二次开发, 第一家公司开发不怎么给力, 下载了源码安装了以后发现时 Yii 框架编写的. 没用过, 下载了一套资料, 简单学习了一遍yii的用法, 懂了AR操作以后,就可以动手修改了.
0x01 密码的分析
mysql数据表中给了数据
(数据全部已修改, 不透露客户资料)
salt: 1234567890
password: deed2a88e73dccaa30a9e6e296f62be238be4ade
数了一下密码个数 40+ 不是md5的, 老鸟应该一看就明白, 我没接触过这个算法
0x02 分析源码
定位文件, 找校验函数
一层层的找:
开启调试 找文件:
第一层:
public function checkPassword()
{
if (! isset($this->model))
return null;
//var_dump($this->password);
//var_dump($this->model);
//die;
if ($this->model->verify($this->password,$this->passwordfield))
return $this->model;
return false;
}
定位这个 verify 函数 花了好长时间:
第二层:
public function verify($password,$passwordfield='password')
{
return $this->$passwordfield===$this->hash($password);
}
继续找 hash 的函数
private function hash($string)
{
return sha1($this->makesalt().$string);
}
private function makesalt()
{
if (!isset($this->salt) or $this->salt=='')
{
$this->salt=md5(time().$this->username);
}
//var_dump($this->salt);
//die;
//直接调用的是数据库的salt
return $this->salt;
}
直接使用 sha1 的加密方式
salt 是数据库直接给的
搞定了 加密原理
salt: 1234567890
密码: xxxx
加密方式 sha1(1234567890xxxx) = 411c371eee6a9ea173d353867d3a50012829107e
工具: http://tool.oschina.net/encrypt?type=2 (在线加密网址)
查询了 sha1 加密 并不安全, 可以直接暴力破解..
算了, 总算分析懂了!
0则评论给“简单网站密码分析”