漏洞挖掘 | 基于mssql数据库的sql注入

news/2024/10/30 18:26:38/

前记

今天挖edu随意点开个站,发现存在mssql数据库sql注入,在此分享下整个挖掘过程

目录

0x1 判断网站数据库类型 0x2 了解mssql数据库的主要三大系统表 0x3 了解mssql的主要函数 0x4 判断注入点及其注入类型 0x5 联合查询之判断列数 0x6 联合查询之获取数据库相关信息 0x7 mssql之时间盲注 0x8 mssql之报错注入 0x9 总结

0x1 判断网站数据库类型

•根据后缀进行判断,mssql数据库一般后缀为aspx,只要是后缀为aspx的站一般都是mssql数据库

•根据报错的信息进行判断,一般报错信息中会有Microsoft等字样,如下图所示

图片

•根据系统表进行判断,利用mssql数据库包含的主要系统表进行判断,例如and (select count(*)from sysdatabases) >0如果成立,则可判断数据库中包含mssql的主要系统表,但是这个方法不绝对,可能出于安全考虑,数据库管理员会删除主要系统表

0x2 了解mssql数据库的主要三大系统表

•sysdatabases :这张表保存在master数据库中,里边的name字段下存放的是所有数据库的库名。

•sysobjects:这张表保存的是数据库的表的信息。

•syscolumns:这张表存放的是数据库中字段的信息。

0x3 了解mssql的主要函数

•host_name() :返回服务器端主机名称。

•current_user():返回当前数据库用户。

•db_name():返回当前数据库库名 。

0x4 判断注入点及其注入类型

这里注入点就不用判断了,点进子栏目发现就一个参数,此参数就是注入点了

图片

直接一个万能’(单引号)然后报错

图片

直接使用55-1判断其数据类型

图片

发现页面成功回显,于是可以确定是数字型

0x5 联合查询之判断列数

使用order by判断其列数

图片

可以看到order by 4正常返回

图片

order by 5 报错,可以判断列数为4

然后使用UNION SELECT来判断 按理来说,UNION SELECT 1,2,3,4应该正常回显,但是不知道是配置原因还是什么原因还是报错,但是还是可以从细微上的差别来区分列数是否正确

当列数设为其他时,报错信息如下

图片

但是列数设为4时,报错信息有所不同,如下图所示,多了一片

图片

0x6 联合查询之获取数据库相关信息

既然UNION SELECT 能正常使用,那我们就可以通过这个直接判断显位输出数据库的相关信息了

前面提到了mssql的三大系统表,这里就是从系统表中查询数据 使用:UNION SELECT 1,2,3,4 from master..sysdatabases

图片

图片

可以看到在显位处于第一列,直接从第一列使用mssql函数db_name()获取数据库信息

0x7 mssql之时间盲注

页面正常返回时间为

图片

我们直接使用时间盲注的函数WAITFOR DELAY ‘0:0:5’进行测试

图片

可以看到页面延迟返回,说明存在时间盲注(本站还存在堆叠注入,但是在此不做演示)

0x8 mssql之报错注入

mssql数据库的报错注入与其他数据库类似

直接使用and 1=(select db_name())获取当前数据库

图片

这里我们使用的是and 1=()进行报错,所以一次只能获取一个值,如果想获取其他值可以使用top函数进行操作,这里不做演示

获取表名:and%201=%20(select%20top%201%20name%20from%20获取的数据库名字..sysobjects%20where%20xtype%20=%200x75)

在mssql中xtype为指定数据类型,0x75对应的数据类型为NVARCHAR

图片

后续不进行测试

0x9 总结

sql注入漏洞挖掘主要还是需要了解各类型的数据库怎么操作,数据库的系统表有哪些,对应的函数有哪些,对过滤机制的绕过手法(虽然本次漏洞挖掘没有涉及到绕过),建议有时间还是需要深入学习一下各类数据库,不仅对漏洞挖掘有帮助,反之对以后可能需要涉及到的安全开发也有很大帮助,比如如何过滤危险函数啊,如何清洗用户输入的数据啊等

最后也是拿下两个中危

图片

 

免费获取网络安全资料:

 申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关


http://www.ppmy.cn/news/1543160.html

相关文章

C++ 在项目中使用vim

一:概述 除了掌握 Vim 的基本操作,利用 Vim 阅读项目源码的方法同样重要,这对实际项目开发大有裨益。虽然现在有许多人选择使用 VSCode,但在某些环境中,可能无法安装 VSCode 或联网下载插件,这时使用 Vim 就…

2023IKCEST第五届“一带一路”国际大数据竞赛--社交网络中多模态虚假 媒体内容核查top11

比赛链接:https://aistudio.baidu.com/competition/detail/1030/0/introduction PPT链接:https://www.ikcest.org/bigdata2024/zlxz/list/page.html 赛题 社交网络中多模态虚假媒体内容核查 背景 随着新媒体时代信息媒介的多元化发展,各种内容…

【verilog】四位全加器

文章目录 前言一、实验原理二、实验过程三、实验结果参考文献 前言 进行 FPGA 全加器 实验 一、实验原理 module adder(ain,bin,cin,cout,s); input ain,bin,cin; output cout,s; assign coutain&bin | ain&cin | bin&cin; assign sain^bin^cin; endmoduletimesc…

Matlab 车牌识别技术

1.1设计内容及要求: 课题研究的主要内容是对数码相机拍摄的车牌,进行基于数字图像处理技术的车牌定位技术和车牌字符分割技术的研究与开发,涉及到图像预处理、车牌定位、倾斜校正、字符分割等方面的知识,总流程图如图1-1所示。 图1-1系统总…

504 Gateway Time-outopenresty

504 Gateway Time-out openresty 问题背景: 当自己点开知乎页面以后,发现官网没有出现任何问题,点击官网以后开始出现各种各样的报错! 一下是来源ai的介绍:(通过搜索这种形式帮助自己进行记忆)…

HTML入门教程18:HTML类

一、定义类 在HTML中&#xff0c;你使用class属性来为元素分配类名。类名可以是任何你选择的名称&#xff0c;但最好使用能够描述元素用途或样式的名称。类名前面用一个点&#xff08;.&#xff09;表示&#xff0c;但在HTML中给元素分配类名时不需要这个点。 <div class&…

Python中的HTTP高手:如何玩转requests模块

目录 引言 一、HTTP协议基础 1. URL解析 2. 请求方法 3. 请求与响应格式 4. 常用状态码 二、requests模块基础 1. 安装requests模块 2. 发送GET请求 3. 发送带参数的GET请求 4. 发送POST请求 5. 发送JSON数据 6. 添加请求头 7. 处理JSON响应 8. 处理错误和异常 …

告别冰冷机器声:GLM-4-Voice开启情感语音交互新时代!

目录 引言一、GLM-4-Voice概述二、GLM-4-Voice的架构三、GLM-4-Voice的主要功能四、GLM-4-Voice的技术原理五、GLM-4-Voice的应用场景六、GLM-4-Voice体验快速开始结语 引言 在人工智能的不断进步中&#xff0c;语音交互技术正逐渐成为人机沟通的重要桥梁。它不仅极大地提升了…