首先,我们看登陆的地方。。最常见了吧。。。
http://127.0.0.1/index.php?m=member&c=index&a=login
默认安装情况下,会使有 V9自带的用户中心。
phpcms\modules\member\index.php
可以看到用户名密码交给了
$this->client->ps_member_login($username, $password);
我们跟进。
phpcms\modules\member\classes\client.class.php
$return = $this->_ps_send('login', array('username'=>$username, 'password'=>$password));
_ps_stripslashes
还原了 GPC,传参数给 API。
我们再看看 API 方的处理方式
phpsso_server\phpcms\modules\phpsso\classes\phpsso.class.php
parse_str 函数默认是根据 GPC情况过滤。
再到
phpsso_server\phpcms\modules\phpsso\index.php
phpsso_server\phpcms\libs\classes\model.class.php
可以看到全程没有对字符串进行过滤。。。
因此,在GPC为 OFF 时,存在SQL注入。
可能没说清楚问题在那里
两个:
1、auth_data 参数拼接
2、api中没有对数据进行过滤
可以做什么?盲注,任意用户登陆。。。其实还有很多利用的地方。。
测试如下: