### 简要描述: CSCMS V3.5 最新补丁后 又一个SQL注射(源码详析) 之前的注射已经修补了,但是还有几处注射点没有注意到 ### 详细说明: 在addslash + 引号保护 的情况下 要格外注意数字型变量的处理 /app/controllers/home.php line:1020 ``` public function gbookdel() { header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); if(@!eregi($_SERVER['SERVER_NAME'],$_SERVER['HTTP_REFERER'])){exit('QQ:848769359');} //测试时注意上一句,需要referer和host同名 //吐槽一下那个QQ是神马意思 - - @header("Content-type: text/html;charset=utf-8"); $id = $this->security->xss_clean($this->input->get_post('id', TRUE)); //ID //id经过安全过滤后addslashes了,当然也过滤XSS了 $users=$this->session->userdata('cs_name'); if(empty($id)){ exit("10000");//参数错误 } if(!$this->CsdjUser->User_Login(1)){ exit("10001");//没有登入 } $sql="SELECT * FROM ".CS_SqlPrefix."gbook where cs_id=".$id.""; //其实加上引号它也是数字,但是为什么不加呢?或者intval也可以呀 //和以下无关,不需要走到delete中去,因为已经select查询完了,之后只要让row为false终止就好了 $row=$this->CsdjDB->get_all($sql); if($row){ if($row[0]->CS_Usera!=$users){...
### 简要描述: CSCMS V3.5 最新补丁后 又一个SQL注射(源码详析) 之前的注射已经修补了,但是还有几处注射点没有注意到 ### 详细说明: 在addslash + 引号保护 的情况下 要格外注意数字型变量的处理 /app/controllers/home.php line:1020 ``` public function gbookdel() { header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); if(@!eregi($_SERVER['SERVER_NAME'],$_SERVER['HTTP_REFERER'])){exit('QQ:848769359');} //测试时注意上一句,需要referer和host同名 //吐槽一下那个QQ是神马意思 - - @header("Content-type: text/html;charset=utf-8"); $id = $this->security->xss_clean($this->input->get_post('id', TRUE)); //ID //id经过安全过滤后addslashes了,当然也过滤XSS了 $users=$this->session->userdata('cs_name'); if(empty($id)){ exit("10000");//参数错误 } if(!$this->CsdjUser->User_Login(1)){ exit("10001");//没有登入 } $sql="SELECT * FROM ".CS_SqlPrefix."gbook where cs_id=".$id.""; //其实加上引号它也是数字,但是为什么不加呢?或者intval也可以呀 //和以下无关,不需要走到delete中去,因为已经select查询完了,之后只要让row为false终止就好了 $row=$this->CsdjDB->get_all($sql); if($row){ if($row[0]->CS_Usera!=$users){ exit("10002");//没有权限 } $this->db->query("delete from ".CS_SqlPrefix."gbook where CS_ID=".$id." or cs_fid=".$id.""); exit('10004'); }else{ exit("10003");//参数错误 } } ``` 漏洞位置: /index.php/home/gbookdel/?id=6&random=你当时的random [<img src="https://images.seebug.org/upload/201402/1413450568bc3e40aa379922d03dfe1756ce00d0.png" alt="address.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/1413450568bc3e40aa379922d03dfe1756ce00d0.png) 是个人空间留言的删除链接 抓包后注意以下三点: 1.抓到后就放在那里,不要消耗掉random,注射后再放走 2.记住referer 3.记住cookie 好了,sqlmap 注意:cookie、referer、random 一个不能少,id一定要取不存在的值(不然random会被消耗) [<img src="https://images.seebug.org/upload/201402/141348477f57ad8037aef34fd4bd86d4ff84c159.png" alt="sqlmap1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/141348477f57ad8037aef34fd4bd86d4ff84c159.png) [<img src="https://images.seebug.org/upload/201402/14135009e8ce2125729451f89986a634dab5fd8d.png" alt="sqlmap2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/14135009e8ce2125729451f89986a634dab5fd8d.png) 以上是在本机上测试的,官网上自己个人空间留言居然需要等待网站管理审核…………难道不应该是用户审核么 ### 漏洞证明: sqlmap 注意:cookie、referer、random 一个不能少,id一定要取不存在的值(不然random会被消耗) [<img src="https://images.seebug.org/upload/201402/141348477f57ad8037aef34fd4bd86d4ff84c159.png" alt="sqlmap1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/141348477f57ad8037aef34fd4bd86d4ff84c159.png) [<img src="https://images.seebug.org/upload/201402/14135009e8ce2125729451f89986a634dab5fd8d.png" alt="sqlmap2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/14135009e8ce2125729451f89986a634dab5fd8d.png)