### 简要描述: 过滤不严。 ### 详细说明: 在注册用户的时候 只是对一些特殊字符进行了转义。 有长度限制。 没有过滤。 造成了二次猪肉。 __ 首先注册一个 123',1,15,0,1,user())# [<img src="https://images.seebug.org/upload/201404/27133547cb437df6d7d30b6ad4871b91ff5eef3f.jpg" alt="s2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/27133547cb437df6d7d30b6ad4871b91ff5eef3f.jpg) 在module/mod_email.php中 ``` public function do_mail(){ global $db; $title = ParamHolder::get("title"); $msg = ParamHolder::get("email_s"); $msg .= ParamHolder::get("email_m"); $roles = ParamHolder::get("role"); $type = ParamHolder::get("type"); $user_email = ParamHolder::get('users'); $title = mysql_escape_string($title); $msg = mysql_escape_string($msg);$user_email = mysql_escape_string($user_email); ``` 对这些字符转义了。 ``` }else{ //单个用户发送 $sql = "select id,login,email from ".Config::$tbl_prefix."users where login='".$user_email."'"; $res = $db->query($sql); $eml = $res->fetchRow(); if (!empty($eml)) {...
### 简要描述: 过滤不严。 ### 详细说明: 在注册用户的时候 只是对一些特殊字符进行了转义。 有长度限制。 没有过滤。 造成了二次猪肉。 __ 首先注册一个 123',1,15,0,1,user())# [<img src="https://images.seebug.org/upload/201404/27133547cb437df6d7d30b6ad4871b91ff5eef3f.jpg" alt="s2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/27133547cb437df6d7d30b6ad4871b91ff5eef3f.jpg) 在module/mod_email.php中 ``` public function do_mail(){ global $db; $title = ParamHolder::get("title"); $msg = ParamHolder::get("email_s"); $msg .= ParamHolder::get("email_m"); $roles = ParamHolder::get("role"); $type = ParamHolder::get("type"); $user_email = ParamHolder::get('users'); $title = mysql_escape_string($title); $msg = mysql_escape_string($msg);$user_email = mysql_escape_string($user_email); ``` 对这些字符转义了。 ``` }else{ //单个用户发送 $sql = "select id,login,email from ".Config::$tbl_prefix."users where login='".$user_email."'"; $res = $db->query($sql); $eml = $res->fetchRow(); if (!empty($eml)) { if(!$this->send_mail($title,$msg,$eml['email'])){ $sql = "insert into ".Config::$tbl_prefix."emails(`title`,`content`,user_id,user_name,is_mail,send_id,is_read,is_ok,create_time) values('{$title}','{$msg}','{$eml['id']}','{$eml['login']}',1,{$send_id},0,1,'{$time}')"; $db->query($sql); ``` 这里 出库 无过滤 然后又带入到了insert当中。 这里我把语句也输出来一下 [<img src="https://images.seebug.org/upload/201404/271336264919d558a288957de10a597ff9f14e20.jpg" alt="s3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/271336264919d558a288957de10a597ff9f14e20.jpg) ### 漏洞证明: [<img src="https://images.seebug.org/upload/201404/27133706412c1d1eb5c99748358054d15319ba1b.jpg" alt="s4.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/27133706412c1d1eb5c99748358054d15319ba1b.jpg)