php代码审计【16】盾灵CMS代码后台阅读审计
一、环境搭建
源码下载:http://ahdx.down.chinaz.com/201308/duenling_v1.0.rar
(1)接下来搭建环境,我用的phpstudy,访问首页:(先创建写数据库,我这里是duenling)
可悲,我这里按装导入用户名密码失败,然后我手动在数据库添加admin/admin(21232f297a57a5a743894a0e4a801fc3)。
结果失败,还是不行(最后明白是编码问题,不能默认utf-8),一定要是下面的编码。
(2)访问http://192.168.189.129/duenling/duenling/admin/axphp.php 后台登录
输入刚才的后太密码(admin/admin),成功登录。ok,环境好了,接下来慢慢看下代码。
(3)安全退出,然后重新到登陆界面---》发现提交时候,提交地址为login.php.。
(4)分析admin/login.php后台代码:
<?php
require '../config.php';
$adminname = $_POST['adminname'];
$adminpass = $_POST['adminpass'];
$adminpass .= "Axphp.com";
$adminpass = md5($adminpass);
$adminsql = "select * from axphp_admin where adminname='$adminname' and adminpass='$adminpass'";
$adminery = mysql_query($adminsql, $config);
$adminnum = mysql_num_rows($adminery);
if ($adminnum == "1") {
setcookie("admin", "Y", time() + 3600, '/');
setcookie("admin_name", $adminname, time() + 3600, '/');
header("location:axadmin.php");
} else {
header("location:axphp.php");
}
?>
这段代码很简单,接收到$adminname ,$adminpass,基本没有过滤,直接传入sql语句查询,虽然对$adminpass密码进行了加密,但是并不影响我们进行直接登录。
这里对$adminsql 进行echo,
http://192.168.189.129/duenling/duenling/admin/axphp.php方便查看(admin/111111),随便输入密码:
当我想进行admin ' 时候,这个 ’ 输入不上去,看下源码,被js过滤了,哎,上Burpsuite。
使用 Burpsuite抓包后改下数据包:
然后看到的返回页面,竟然之际就可以登录了。
完成的来试下:
直接进入后台了。
这就是传说中的万能密码,哈哈哈。
如果构造语句,写成 admin' or 1=1 # ,后台直接进。毫无阻挡。。。。。(传说中的万能登录)
上一篇: PHP代码审计基础:代码执行漏洞
下一篇: 深度学习中的优化问题以及常用优化算法