欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php代码审计【16】盾灵CMS代码后台阅读审计

程序员文章站 2022-04-30 10:23:28
...

一、环境搭建

      源码下载:http://ahdx.down.chinaz.com/201308/duenling_v1.0.rar

(1)接下来搭建环境,我用的phpstudy,访问首页:(先创建写数据库,我这里是duenling)

php代码审计【16】盾灵CMS代码后台阅读审计php代码审计【16】盾灵CMS代码后台阅读审计

 可悲,我这里按装导入用户名密码失败,然后我手动在数据库添加admin/admin(21232f297a57a5a743894a0e4a801fc3)。

结果失败,还是不行(最后明白是编码问题,不能默认utf-8),一定要是下面的编码。

php代码审计【16】盾灵CMS代码后台阅读审计

(2)访问http://192.168.189.129/duenling/duenling/admin/axphp.php 后台登录

php代码审计【16】盾灵CMS代码后台阅读审计 

 输入刚才的后太密码(admin/admin),成功登录。ok,环境好了,接下来慢慢看下代码。

php代码审计【16】盾灵CMS代码后台阅读审计

 (3)安全退出,然后重新到登陆界面---》发现提交时候,提交地址为login.php.。

php代码审计【16】盾灵CMS代码后台阅读审计

(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),随便输入密码:

php代码审计【16】盾灵CMS代码后台阅读审计

当我想进行admin ' 时候,这个 ’ 输入不上去,看下源码,被js过滤了,哎,上Burpsuite。 

php代码审计【16】盾灵CMS代码后台阅读审计

使用 Burpsuite抓包后改下数据包:

php代码审计【16】盾灵CMS代码后台阅读审计

然后看到的返回页面,竟然之际就可以登录了。

php代码审计【16】盾灵CMS代码后台阅读审计

 完成的来试下:

php代码审计【16】盾灵CMS代码后台阅读审计

直接进入后台了。 

php代码审计【16】盾灵CMS代码后台阅读审计

这就是传说中的万能密码,哈哈哈。 

如果构造语句,写成 admin' or 1=1 # ,后台直接进。毫无阻挡。。。。。(传说中的万能登录)