在phpcmsv9的通行证程序内。
phpsso_server/phpcms/modules/phpsso/classes/phpsso.class.php
内的一行代码
if(get_magic_quotes_gpc()) {
$this->data = new_stripslashes($this->data);
}
这里的输入在magic_quotes_gpc开启的时候居然stripslashes了。。。
然后就没有然后了。。。。。
在开启magic_quotes_gpc的环境下,去到phpcms登陆的界面,输入
密码随意输入,提示[密码错误]而非[账户不存在]就证明你可以注入了。
为什么提示不一样??如下
if($status == -1) { //用户不存在
showmessage(L('user_not_exist'), 'index.php?m=member&c=index&a=login');
} elseif($status == -2) { //密码错误
showmessage(L('password_error'), 'index.php?m=member&c=index&a=login');
} else {
showmessage(L('login_failure'), 'index.php?m=member&c=index&a=login');
}
若把v9_sso_applications中的数据读出来,这就是一个严重 漏洞 了。
修复方案: 其实没必要stripslashes。 官方已放出升级,请及时补丁
查看更多关于PhpcmsV9 SQL注射 2013年贺岁第一发 - 网站安全 - 自的详细内容...