首先来看看union_act.php:
注意这里:
$insert1 = $this->_union->rec_insert($unionarr);
我们来看看rec_insert的处理:
最后直接进入INSERT INTO,进入SQL语句
我们来看看$this->view->data['username']这个内容是什么
还是union_act.php文件:
注意这几处关系:
$user=$user->getrow(array('username'=>cookie::get('login_username')));
$this->view->user = $user;
$this->view->data = $this->view->user;
所以由上面三处赋值关系可以看到
$this->view->data就是当前登录用户的用户属性信息。
所以到这里我们来想一想:
要是这里的用户属性信息就是$this->view->data的内容再进入SQL语句时,能带入单引号’或者反斜杠\,那么就可能导致SQL注入。
带着这个问题,我们来看看$this->view->data即用户属性信息是如何存进数据库的,能不能带入特殊符号进入。
这里就要注册时,带入\即可
但是最新版在user_act.php中进行了处理:
把\\给替换为空了,导致无法直接带入\
但是这里还有一个respond_action函数:
这里同样可以注册,而且没有过滤username,注册更简单,并且可带入反斜杠\
可以看到这里的用户名username直接赋给了cookie[login_username]
第二处SQL注入在guestbook_act.php文件
同样的原理,就不在详细分析
在留言时,抓包,修改content的值即可
具体分析可见: WooYun: CmsEasy最新版多处SQL注入附如何从一处到多处漏洞快速挖掘定位
由register_action引起的漏洞分析
1、注册:
2、登陆:
这里登陆也是用这个接口登陆
3、注册推广联盟:
然后抓包,修改payaccount的值
然后看看数据库执行记录:
4、修改资料:
即可看到结果: