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语”就可以了。。

目录
相关文章
|
2月前
|
SQL 存储 数据可视化
手机短信SQL分析技巧与方法
在手机短信应用中,SQL分析扮演着至关重要的角色
|
2月前
|
SQL 关系型数据库 MySQL
详解 pypika 模块:SQL 语句生成器,让你再也不用为拼接 SQL 语句而发愁
详解 pypika 模块:SQL 语句生成器,让你再也不用为拼接 SQL 语句而发愁
183 4
|
2月前
|
SQL 运维 安全
怎样可以找到SQL漏洞:技巧与方法详解
SQL漏洞,特别是SQL注入漏洞,是Web应用中常见的安全威胁之一
|
3月前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
580 1
|
3月前
|
SQL 安全 前端开发
Web安全-SQL注入漏洞
Web安全-SQL注入漏洞
28 0
|
4月前
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
63 0
|
4月前
|
SQL 数据采集 数据挖掘
为什么要使用 SQL 函数?详尽分析
【8月更文挑战第31天】
62 0
|
4月前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
243 0
|
4月前
|
SQL 数据挖掘 BI
【超实用技巧】解锁SQL聚合函数的奥秘:从基础COUNT到高级多表分析,带你轻松玩转数据统计与挖掘的全过程!
【8月更文挑战第31天】SQL聚合函数是进行数据统计分析的强大工具,可轻松计算平均值、求和及查找极值等。本文通过具体示例,展示如何利用这些函数对`sales`表进行统计分析,包括使用`COUNT()`、`SUM()`、`AVG()`、`MIN()`、`MAX()`等函数,并结合`GROUP BY`和`HAVING`子句实现更复杂的数据挖掘需求。通过这些实践,你将学会如何高效地应用SQL聚合函数解决实际问题。
60 0
|
4月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)