查看: 13469|回复: 2

新年礼物:Phpcms V9 短消息回复SQL注入

[复制链接]
发表于 2013-2-6 23:49:29 | 显示全部楼层 |阅读模式
modules/message/index.php

  1. public function reply() {
  2.                         if(isset($_POST['dosubmit'])) {
  3.                                 $messageid = intval($_POST['info']['replyid']);
  4.                                 //判断当前会员,是否可发,短消息.
  5.                                 $this->message_db->messagecheck($this->_userid);
  6.                                 //检查此消息是否有权限回复
  7.                                 $this->check_user($messageid,'to');
  8.                                  
  9.                                  $_POST['info']['send_from_id'] = $this->_username;
  10.                                 $_POST['info']['message_time'] = SYS_TIME;
  11.                                 $_POST['info']['status'] = '1';
  12.                         $_POST['info']['folder'] = 'inbox';
  13.                                 $_POST['info']['content'] = safe_replace($_POST['info']['content']);
  14.                                 $_POST['info']['subject'] = safe_replace($_POST['info']['subject']);
  15.                                 if(empty($_POST['info']['send_to_id'])) {
  16.                                         showmessage(L('user_noempty'),HTTP_REFERER);
  17.                                 }
  18.                                 $messageid = $this->message_db->insert($_POST['info'],true);//目测是直接遍历数据,然后key就是column val就是vaules插入。。如info[6148']
  19.                                 if(!$messageid) return FALSE;
  20.                                 showmessage(L('operation_success'),HTTP_REFERER);
  21.                                  
  22.                         } else {
  23.                                 $show_validator = $show_scroll = $show_header = true;
  24.                                 include template('message', 'send');
  25.                         }
  26.          
  27.                 }
复制代码
mysql.class.php

  1. public function insert($data, $table, $return_insert_id = false, $replace = false) {
  2.                         if(!is_array( $data ) || $table == '' || count($data) == 0) {
  3.                                 return false;
  4.                         }
  5.                          
  6.                         $fielddata = array_keys($data);//不出所料
  7.                         $valuedata = array_values($data);
  8.                         array_walk($fielddata, array($this, 'add_special_char')); //但是处理过,似乎没啥办法注入,反正我是没想到
  9.                         array_walk($valuedata, array($this, 'escape_string'));
  10.                  
  11.                         $field = implode (',', $fielddata);
  12.                         $value = implode (',', $valuedata);
  13.          
  14.                         $cmd = $replace ? 'REPLACE INTO' : 'INSERT INTO';
  15.                         $sql = $cmd.' `'.$this->config['database'].'`.`'.$table.'`('.$field.') VALUES ('.$value.')';
  16.                         $return = $this->execute($sql);
  17.                         return $return_insert_id ? $this->insert_id() : $return;
  18.                 }                
  19.                 public function add_special_char(&$value) {
  20.                         if('*' == $value || false !== strpos($value, '(') || false !== strpos($value, '.') || false !== strpos ( $value, '`')) {
  21.                                 //不处理包含* 或者 使用了sql方法。
  22.                         } else {
  23.                                 $value = '`'.trim($value).'`';
  24.                         }
  25.                         if (preg_match("/\b(select|insert|update|delete)\b/i", $value)) { //正则匹配,然后替换
  26.                                 $value = preg_replace("/\b(select|insert|update|delete)\b/i", '', $value);
  27.                         }
  28.                         return $value;
  29.                 }
复制代码
20130206234831.jpg
提示:
  Unknown column '6148\'' in 'field list'
回复

使用道具 举报

xyz 该用户已被删除
发表于 2013-2-7 00:12:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2013-2-24 04:28:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-3-7 04:06 , Processed in 0.027454 second(s), 15 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部