### 简要描述: 广告:求react.js和ruby on rails爱好者,我要拜师!! ### 详细说明: 齐博系统较多,我只以开源的整站做例子说,但不代表其他系统不存在这个问题,我没测试。 齐博CMS默认用户注册后可以给“美女欣赏”这个栏目投稿,投稿时候可以填写文章的“关键字”(keyword): [<img src="https://images.seebug.org/upload/201502/132202231cdcb7bd81297487204d2462f89a8179.png" alt="01.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/132202231cdcb7bd81297487204d2462f89a8179.png) 这个内容保存在article这个表中的keywords字段中。 我们来到/do/fujsrticle.php,93行开始: ``` if(!$keyword) { $erp=get_id_table($id); extract($db->get_one("SELECT keywords AS keyword FROM {$pre}article$erp WHERE aid='$id'")); } if($keyword){ $detail=explode(" ",$keyword); unset($detail2,$ids); foreach( $detail AS $key=>$value){ $value && $detail2[]=" B.keywords='$value' "; } $str=implode(" OR ",$detail2); ``` 当$keyword不存在的时候,则从article表中取出keywords,并用空格分开后再拼接成SQL语句。 因为是从数据库里取出又存入的,所以,这里造成一个二次注入。虽然keywords写入的时候将单引号转义成html实体了,但我这里可以引入一个反斜线\,就够了。 ### 漏洞证明: 注册以后在“美女欣赏”这个版块投稿,关键字那一行填写“aaa\ bbbbb”,审核的勾去掉。 [<img...
### 简要描述: 广告:求react.js和ruby on rails爱好者,我要拜师!! ### 详细说明: 齐博系统较多,我只以开源的整站做例子说,但不代表其他系统不存在这个问题,我没测试。 齐博CMS默认用户注册后可以给“美女欣赏”这个栏目投稿,投稿时候可以填写文章的“关键字”(keyword): [<img src="https://images.seebug.org/upload/201502/132202231cdcb7bd81297487204d2462f89a8179.png" alt="01.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/132202231cdcb7bd81297487204d2462f89a8179.png) 这个内容保存在article这个表中的keywords字段中。 我们来到/do/fujsrticle.php,93行开始: ``` if(!$keyword) { $erp=get_id_table($id); extract($db->get_one("SELECT keywords AS keyword FROM {$pre}article$erp WHERE aid='$id'")); } if($keyword){ $detail=explode(" ",$keyword); unset($detail2,$ids); foreach( $detail AS $key=>$value){ $value && $detail2[]=" B.keywords='$value' "; } $str=implode(" OR ",$detail2); ``` 当$keyword不存在的时候,则从article表中取出keywords,并用空格分开后再拼接成SQL语句。 因为是从数据库里取出又存入的,所以,这里造成一个二次注入。虽然keywords写入的时候将单引号转义成html实体了,但我这里可以引入一个反斜线\,就够了。 ### 漏洞证明: 注册以后在“美女欣赏”这个版块投稿,关键字那一行填写“aaa\ bbbbb”,审核的勾去掉。 [<img src="https://images.seebug.org/upload/201502/13220558420c31080d0f4354c74e903d62f232eb.png" alt="屏幕快照 2015-02-13 下午9.31.54.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/13220558420c31080d0f4354c74e903d62f232eb.png) 提交后,来到/member/myarticle.php?job=myarticle看看id是多少(我的是668): [<img src="https://images.seebug.org/upload/201502/132206246273cc794986af8f7f8c4f1a735f70ea.png" alt="屏幕快照 2015-02-13 下午9.34.23.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/132206246273cc794986af8f7f8c4f1a735f70ea.png) 然后访问/do/fujsarticle.php?type=like&id=668 [<img src="https://images.seebug.org/upload/201502/13220652bca833671d6fa85d86976a718cb8f507.png" alt="屏幕快照 2015-02-13 下午9.39.58.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/13220652bca833671d6fa85d86976a718cb8f507.png) 可见bbbb处为注入点。 将投稿时候的keyword改成“aaa\ and/**/updatexml(0,concat(0xa,user()),0)#”,即可注入出mysql用户名: [<img src="https://images.seebug.org/upload/201502/13220716730fa6b4f2e13ebfbd38b7b7f8f5ccf6.png" alt="屏幕快照 2015-02-13 下午9.51.38.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/13220716730fa6b4f2e13ebfbd38b7b7f8f5ccf6.png)