打了补丁试试。 在app/message.app.php中
function drop() { $msg_ids = isset($_GET['msg_id']) ? trim($_GET['msg_id']) : ''; if (!$msg_ids) { $this->show_warning('no_such_message'); return; } $msg_ids = explode(',',$msg_ids); $mod_message = &m('message'); foreach ($msg_ids as $key=>$msg_id){ $message = $mod_message->find(intval($msg_id)); $message = current($message); if(!$message || $message['parent_id']!=0) { unset($msg_ids[$key]); //过滤掉回复的和数据库没有的短信的msg_id } } if (!$msg_ids) { $this->show_warning('no_such_message'); return; } if (!$mod_message->msg_drop($msg_ids, $this->visitor->get('user_id'))) //删除 { $this->show_warning($mod_message->get_error()); return; }
$msg_ids = isset($_GET['msg_id']) ? trim($_GET['msg_id']) : ''; 这里没有过滤 跟进一下函数
function msg_drop($msg_id, $user_id) { $msg_ids = is_array($msg_id) ? $msg_id : explode(',', $msg_id); if (!$msg_ids) { $this->_error('no_such_message'); return false; } if (!$user_id) { $this->_error('no_such_user'); return false; } foreach ($msg_ids as $msg_id) { $message = $this->get_info($msg_id); if ($user_id==$message['to_id']) //收件箱 { if ($message['status']==2 || $message['status']==3) { $this->edit($msg_id, array('status' => 2)); }else { $drop_ids[] = $msg_id; //记录需要删除记录的msg_id } } 没过滤 再跟
function edit($conditions, $edit_data) { if (empty($edit_data)) { return false; } $edit_data = $this->_valid($edit_data); if (!$edit_data) { return false; } $edit_fields = $this->_getSetFields($edit_data); $conditions = $this->_getConditions($conditions, false); $this->db->query("UPDATE {$this->table} SET {$edit_fields}{$conditions}"); return $this->db->affected_rows(); 带入到update中。 来注入把。 首先注册两个号 用一个号给另外一个号发短消息 然后另外一个号查看的时候抓个包。
可以报错注入。 修复方案:$msg_ids = isset($_GET['msg_id']) ? intval($_GET['msg_id']) : ''; |
-
上一篇: 网站优化新动_IP+端口泛解析 - 网站安全 - 自学
下一篇: Ucenter Home 2.0 SQL注入2枚(最新版) - 网站安全
还没有人抢沙发呢~