PHPCMS V9 视频分享模块SQL注射漏洞分析

简介: 其实这个0day前几天就发现了,只是今天放出来是因为我最重要的人。。   废话不多说了,直接上代码分析          \phpcms\modules\video.php(78行代码) /** * * 视频添加方法 */ public funct...

其实这个0day前几天就发现了,只是今天放出来是因为我最重要的人。。

 

废话不多说了,直接上代码分析

         \phpcms\modules\video.php(78行代码)

/**
     * 
     * 视频添加方法
     */
public function add() {
if ($_POST['dosubmit']) {
            //首先处理,提交过来的数据
             $data['vid'] = $_POST['vid'];  // 很明显VID没有过滤
if (!$data['vid']) showmessage(L('failed_you_video_uploading'), 'index.php?m=video&c=video&a=add');
            $data['title'] = isset($_POST['title']) && trim($_POST['title']) ? trim($_POST['title']) : showmessage(L('video_title_not_empty'),
'index.php?m=video&c=video&a=add&meunid='.$_GET['meunid']);
            $data['description'] = trim($_POST['description']);
            $data['keywords'] = trim(strip_tags($_POST['keywords']));
            //其次向vms post数据,并取得返回值
            $get_data = $this->ku6api->vms_add($data);
            if (!$get_data) {
                showmessage($this->ku6api->error_msg);
            }
            $data['vid'] = $get_data['vid'];
            $data['addtime'] = SYS_TIME;
            $data['userupload'] = intval($_POST['userupload']); //这才是重点..
            $videoid = $this->v->add($data); // 进数据库了,亲..
            if ($videoid) {
                showmessage(L('operation_success'), 'index.php?m=video&c=video&a=init&meunid='.$_GET['meunid']);
            } else {
                showmessage(L('operation_failure'), 'index.php?m=video&c=video&a=add&meunid='.$_GET['meunid']);
            }
        } else {
            if(!$this->ku6api->testapi()) {
                showmessage(L('vms_sn_skey_error'),'?m=video&c=video&a=setting&menuid='.$_GET['menuid']);
            }
            $flash_info = $this->ku6api->flashuploadparam();
            $show_validator = true;
            include $this->admin_tpl('video_add');
        }
    }

 

好,下面我们继续分析进数据库的那一刹那。。

*/
    public function add($data = array()) {
        if (is_array($data) && !empty($data)) {
            $data['status'] = 1;
            $data['userid'] = defined('IN_ADMIN') ? 0 : param::get_cookie('_userid'); //想玩cookie注入吗?
             //虽然这里没有提到$_data[‘vid’],但是已经在我歌声里了。。
$vid = $this->db->insert($data, true); //插入了,亲!!
            return $vid ? $vid : false; 
        } else {
            return false;

 

但是,利用漏洞有2个前提..

 

利用这个漏洞提前:

  1. 允许注册用户
  2. 允许视频上传

利用漏洞: 由于vid是取决于html提交过来的,所以我们只要修改vid的值成“SQL语”就可以了。。

目录
相关文章
|
17天前
|
SQL 索引
19. 一个SQL语句执行很慢, 如何分析
该内容介绍了如何分析执行慢的SQL语句。首先启用慢查询日志或使用命令获取慢查询的SQL。然后利用`EXPLAIN`命令分析,关注其中的`select_type`, `type`, 和 `extra`字段。`select_type`涉及子查询和联合查询的类型,`type`表示查询优化器使用的访问类型,性能从上到下递减,`extra`字段提供额外信息,如是否使用索引等。
20 0
|
17天前
|
SQL 安全
jeecg-boot sql注入漏洞解决
jeecg-boot sql注入漏洞解决
76 0
|
17天前
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
6天前
|
SQL HIVE UED
【Hive SQL 每日一题】分析电商平台的用户行为和订单数据
作为一名数据分析师,你需要分析电商平台的用户行为和订单数据。你有三张表:`users`(用户信息),`orders`(订单信息)和`order_items`(订单商品信息)。任务包括计算用户总订单金额和数量,按月统计订单,找出最常购买的商品,找到平均每月最高订单金额和数量的用户,以及分析高消费用户群体的年龄和性别分布。通过SQL查询,你可以实现这些分析,例如使用`GROUP BY`、`JOIN`和窗口函数来排序和排名。
|
17天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
17天前
|
SQL 机器学习/深度学习 数据采集
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
|
17天前
|
SQL 机器学习/深度学习 算法
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
|
17天前
|
SQL 自然语言处理 算法
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
|
17天前
|
SQL 关系型数据库 MySQL
[第一章 web入门]SQL注入-2 题目分析与详解
[第一章 web入门]SQL注入-2 题目分析与详解
|
17天前
|
SQL 数据库
[第一章 web入门]SQL注入-1 题目分析与详解
[第一章 web入门]SQL注入-1 题目分析与详解