漏洞文件:
user/user_download_resume.php 331-356行
这里有用到两个函数,write_memberslog和write_pmsnotice.而且都传进了参数 $ruser['username'],而$ruser['username']来自于333行直接查询数据库而来,并且没有做转义操作。若果write_memberslog和write_pmsnotice也没有做出转义,那么久造成了注入。我们跟进这两个函数
可以看见,两个函数对传入的数据都没有做转义。所以造成注入。
下面开始利用
这里演示由write_memberslog函数造成的注入,因为write_pmsnotice在它的后面,如果我们前面已的用户名已经注册成恶意字符,后面的的这个函数sql语句会执行不成功,因为插入的字段数目和本身的SQL语句的字段数目不匹配(不知道说清楚没有)
1.首先注册一个企业账号,并且发布一个职位。
2.注册一个普通用户,我们的用户名要注册成:1','1','1',user(),'1','9')#(虽然有全局转义,但是代入数据库之后,会被还原的)。
3.填好一份简历,然后申请刚刚我们发布的那个职位
4.登陆企业账号,来到职位管理的地方,我们点击下载简历
5.看看数据库监控语句,成功执行。
顺便看看,write_pmsnotice函数的sql语句
看到没有,还是直接带入语句的,只是因为我们的字段数不匹配,所以不成功执行而已,但确实是注入,所以一并修复哦
6.来到我的账户,
OK ,找到出来的的地方了。