Day09 -实例:拿到加密密文进行解密
前置条件:是能入库拿到密文及带的salt。
一、拿得到源码
实例1:【dz3.2网站】
00x1 拿到密文
pwd:1bc86728263c0d5b497fa1e0be486566
salt:e4402c
00x2 打开网站文件夹 找到文件
【先直接用这个路径去找,php开发架构还没讲到】
/upload/uc_client/model/user.php
00x3 代码审计找到加密逻辑
00x4 根据加密逻辑进行解密
$password = md5(md5($password).$salt);
pwd:1bc86728263c0d5b497fa1e0be486566
salt:e4402c
加密逻辑是:先对pwd进行一次md5 --> 而后再添加上salt进行第二次md5加密
复现:
拿走第一次md5的加盐 再进行二次md5加密
00x5 或使用在线php工具进行脚本编写
PHP 在线工具 | 菜鸟工具
<?php
$password='123456';
$salt='e4402c';$a=md5($password);
$aa=md5($a.$salt);if($aa='1bc86728263c0d5b497fa1e0be486566'){
echo 'ok';
}else{
echo 'no';
}?>
实例2:【dz3.5网站】
与dz3.2同理。
00x1 拿到密文
发现salt的值为空
pwd是:
$10$rzzzykB/CUmS9/NhXDQXuuD3n502rbfH./MJSzWnGaHNHVqgF5HEG
00x2 打开网站根目录,找到关键文件
路径:/dsicuzx3.5/upload/uc_client/model/user.php
00x3 代码审计找到加密逻辑
不知道password_hash是什么函数,去搜;
PHP password_hash() 函数 | 菜鸟教程
发现就很像我们刚刚拿到的密文
00x4 用php脚本进行解密
<?php
$hash = '$2y$10$rzzzykB/CUmS9/NhXDQXuuD3n502rbfH./MJSzWnGaHNHVqgF5HEG';if (password_verify('123456',$hash)){
echo 'ok';
}else{
echo 'error';
}?>
二、拿不到源码 尝试前端抓包
【z-blog】我们还是用云服务器去进行一个zblog站点的搭建,搭建教程详见我的这一篇博客:
Day02-阿里云服务器+宝塔集成化配置 -宝塔一键部署失败问题解决-CSDN博客
我们搭建好后,进行后台登录,用户名:admin 密码:123456;右击检查,输入验证码后,
抓到了一个这个数据包,然后我们看到了密文。
e10adc3949ba59abbe56e057f20f883e
思路1:根据要求密文猜是什么算法的加密
我们看这个密文的格式,就特别像32位的md5加密,我们拿去在线工具试试解密
md5在线解密破解,md5解密加密
思路2:判断是否是前端加密,js抓包
刚刚提示输入错误的页面,我们点击返回,右键检查一下登录按钮,看一下javascript(js)的语句,我们找找看关于密码输入的处理。
于此判断,zblog用的是前端加密,加密算法是md5。
至此,关于解密的实例演示就结束啦!最终贴一张总结的解密思路给大家。