博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHPCMS V9 视频分享模块SQL注射漏洞分析
阅读量:5794 次
发布时间:2019-06-18

本文共 2208 字,大约阅读时间需要 7 分钟。

其实这个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语”就可以了。。

转载地址:http://tiffx.baihongyu.com/

你可能感兴趣的文章
VB关键字总结
查看>>
android代码生成jar包并混淆
查看>>
一个不错的vue项目
查看>>
屏蔽指定IP访问网站
查看>>
根据毫秒数计算出当前的“年/月/日/时/分/秒/星期”并不是件容易的事
查看>>
shell变量子串
查看>>
react报错this.setState is not a function
查看>>
Centos7.x:开机启动服务的配置和管理
查看>>
xss
查看>>
iOS:百度长语音识别具体的封装:识别、播放、进度刷新
查看>>
华为硬件工程师笔试题
查看>>
jquery居中窗口-页面加载直接居中
查看>>
cd及目录快速切换
查看>>
Unity Shaders and Effects Cookbook (3-5) 金属软高光
查看>>
31-hadoop-hbase-mapreduce操作hbase
查看>>
C++ 代码风格准则:POD
查看>>
linux-友好显示文件大小
查看>>
【转】【WPF】WPF中MeasureOverride ArrangeOverride 的理解
查看>>
【转】二叉树的非递归遍历
查看>>
NYOJ283对称排序
查看>>