### 简要描述:
过滤不严。
### 详细说明:
在注册用户的时候 只是对一些特殊字符进行了转义。 有长度限制。
没有过滤。
造成了二次猪肉。
__________________________________________________________________________
首先注册一个 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)
暂无评论