xhcms审计-2

环境配置等见上文https://www.yuque.com/hackerhack/ivgh1y/ol3bme
Sql注入:
代码分析,漏洞在admin/files/login.php文件第10行
根据上文我们可以得知,当用户访问admin/index.php时,会自动包含admin/files/index.php,而此文件会包含inc/checklogin.php,判断用户是否有权限,如果没有,则先包含admin/files/login.php文件,再跳转到登陆界面
大致流程图如下

xhcms审计-2 - 图1
再来看看login.php的代码
xhcms审计-2 - 图2
<?php
obstart();
require ‘../inc/conn.php’;
$login=$_POST[‘login’];
$user=$_POST[‘user’];
$password=$_POST[‘password’];
$checkbox=$_POST[‘checkbox’];
if ($login<>””){
$query = “SELECT FROM manage WHERE user=’$user‘“;
$result = mysql_query($query) or die(‘SQL语句有误:’.mysql_error());
$users = mysql_fetch_array($result);
if (!mysql_num_rows($result)) {
echo ““;
exit;
}else{
$passwords=$users[‘password’];
if(md5($password)<>$passwords){
echo ““;
*exit
;
}
//写入登录信息并记住30天_
if ($checkbox==1){
setcookie(‘user’,$user,time()+36002430,’/‘);
}else{
setcookie(‘user’,$user,0,’/‘);
}
echo ““;
exit;
}
exit;
ob_end_flush();
}?>
可以看到,第10-12行处,有个很明显的sql注入
但这里无法使用万能密码,它会根据你输入的密码,MD5加密后,再与数据库里对应用户名的密码进行比对,不是直接查询密码。所以,万能密码也就失效了。
漏洞复现
xhcms审计-2 - 图3
加入单引号后,报错
测试sleep
‘and if(1>0,sleep(6),1)—
测试成功,延时6s

xhcms审计-2 - 图4