查看: 12008|回复: 2

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

[复制链接]
  • TA的每日心情

    3 天前
  • 签到天数: 1563 天

    [LV.Master]伴坛终老

    发表于 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备2021031567号 )

    GMT+8, 2024-5-4 07:09 , Processed in 0.054383 second(s), 17 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部