当前位置: 首页 > news >正文

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

视频教程在我主页简介或专栏里 

目录: 

       前记

  0x1 判断网站数据库类型

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

  0x3 了解mssql的主要函数

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

  0x5 联合查询之判断列数

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

  0x7 mssql之时间盲注

  0x8 mssql之报错注入

  0x9 总结

 

前记

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

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之时间盲注

页面正常返回时间为

图片

img

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

    最后也是拿下两个中危

    图片

     

    视频教程在我主页简介或专栏里

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

     

    相关文章:

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

    视频教程在我主页简介或专栏里 目录: 前记 0x1 判断网站数据库类型 0x2 了解mssql数据库的主要三大系统表 0x3 了解mssql的主要函数 0x4 判断注入点及其注入类型 0x5 联合查询之判断列数 0x6 联合查询之获取数据库相关信息 0x7 mssql之时间盲注 0x8 mssql之报错注…...

    Java 中 LinkedList 的底层源码

    在 Java 的集合框架中,LinkedList是一个独特且常用的成员。它基于双向链表实现,与数组结构的集合类如ArrayList有着显著差异。深入探究LinkedList的底层源码,有助于我们更好地理解其工作原理和性能特点,以便在实际开发中做出更合适…...

    使用服务器部署DeepSeek-R1模型【详细版】

    文章目录 引言deepseek-r1IDE或者终端工具算力平台体验deepseek-r1模型总结 引言 在现代的机器学习和深度学习应用中,模型部署和服务化是每个开发者面临的重要任务。无论是用于智能推荐、自然语言处理还是图像识别,如何高效、稳定地将深度学习模型部署到…...

    k8s,1.修改容器内主机名和/etc/hosts 文件,2.root特权容器,3.pod安全策略(基于名称空间

    1.修改容器内主机名和/etc/hosts 文件,让持久生效,通过修改资源清单方式---kind: PodapiVersion: v1metadata:name: rootspec:hostname: myhost # 修改主机名hostAliases: # 修改 /etc/hosts- ip: 192.168.88.240 # IP 地址hostnames: # 名…...

    MSPFN 代码复现

    1、环境配置 conda create -n MSPFN python3.9 conda activate MSPFN pip install opencv-python pip install tensorflow pip install tqdm pip install matplotlib2、train 2.1 创建数据集 2.1.1 数据集格式 |--rainysamples |--file1: |--file2:|--fi…...

    除了console.error,还有什么更好的错误处理方式?

    除了 console.error,在 Vue 应用中进行更好的错误处理可以采用以下几种方式: 一、使用全局错误处理 Vue 的错误捕获在 Vue 2 中,可以使用 errorHandler 来捕获全局的错误: Vue.config.errorHandler = (err, vm, info) => {// 处理错误,例如记录日志logError(err, info…...

    力扣.270. 最接近的二叉搜索树值(中序遍历思想)

    文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的中序遍历) 本题的难点在于可能存在多个答案,并且要返回最小的那一个,为了解决这个问题,我门则要利用上二叉搜索树中序遍历为有序序列的特性,具体到代码中&a…...

    Yageo国巨的RC系列0402封装1%电阻库来了

    工作使用Cadence多年,很多时候麻烦的就是整理BOM,因为设计原理图的时候图省事,可能只修改value值和封装。 但是厂家,规格型号,物料描述等属性需要在最后的时候一行一行的修改,繁琐又容易出错,过…...

    wait/notify/join/设计模式

    JUC wait obj.wait() 让进入 object 监视器的线程到 waitSet 等待wait()方法会释放对象的锁,进入 WaitSet 等待区,从而让其他线程就机会获取对象的锁。无限制等待,直到 notify 为止wait(long n)有时限的等…...

    Windows Docker笔记-Docker拉取镜像

    通过在前面的章节《安装docker》中,了解并安装成功了Docker,本章讲述如何使用Docker拉取镜像。 使用Docker,主要是想要创建并运行Docker容器,而容器又要根据Docker镜像来创建,那么首当其冲,必须要先有一个…...

    七大排序思想

    目录 七大排序的时间复杂度和稳定性 排序 插入排序 简单插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 快排的递归实现 hoare版本的快排 挖坑法的快排 双指针法的快排 快排的非递归 归并排序 归并的递归实现 归并的非递归实现…...

    intra-mart实现简易登录页面笔记

    一、前言 最近在学习intra-mart框架,在此总结下笔记。 intra-mart是一个前后端不分离的框架,开发时主要用的就是xml、html、js这几个文件; xml文件当做配置文件,html当做前端页面文件,js当做后端文件(js里…...

    SpringBoot整合RocketMQ

    前言 在当今快速发展的软件开发领域,构建高效、稳定的应用系统是每个开发者的追求。Spring Boot 作为一款极具影响力的开发框架,凭借其强大的自动化配置和便捷的开发特性,极大地简化了项目搭建过程。使用 Spring Boot,我们无需再…...

    深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术

    深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术 在现代视频处理和编码中,YUV 颜色空间和**色度二次采样(Chroma Subsampling)**是两个非常重要的概念。它们的结合不仅能够显著减少视频数据量,还能在保持较高视觉质量的同时优化存储和传输效率。而 YUV Plana…...

    项目顺利交付,几个关键阶段

    年前离放假还有10天的时候,来了一个应急项目, 需要在放假前一天完成一个演示版本的项目,过年期间给甲方领导看。 本想的最后几天摸摸鱼,这么一来,非但摸鱼不了,还得加班。 还在虽然累,但也是…...

    第七天 开始学习ArkTS基础,理解声明式UI编程思想

    学习 ArkTS 的声明式 UI 编程思想是掌握 HarmonyOS 应用开发的核心基础。以下是一份简洁高效的学习指南,帮助你快速入门: 一、ArkTS 声明式 UI 核心思想 数据驱动 UI f(state):UI 是应用状态的函数,状态变化自动触发 UI 更新。单…...

    windows C++ Fiber (协程)

    协程,也叫微线程,多个协程在逻辑上是并发的,实际并发由用户控件。 在windows上引入了纤程(fiber)。 WinBase.h 中函数原型 #if(_WIN32_WINNT > 0x0400)// // Fiber begin //#pragma region Application Family or OneCore Family or Game…...

    游戏引擎学习第89天

    回顾 由于一直没有渲染器,终于决定开始动手做一个渲染器,虽然开始时并不确定该如何进行,但一旦开始做,发现这其实是正确的决定。因此,接下来可能会花一到两周的时间来编写渲染器,甚至可能更长时间&#xf…...

    2025新鲜出炉--前端面试题(一)

    文章目录 1. vue3有用过吗, 和vue2之间有哪些区别2. vue-router有几种路由, 分别怎么实现3. webpack和rollup这两个什么区别, 你会怎么选择4. 你能简单介绍一下webpack项目的构建流程吗5. webpack平时有手写过loader和plugin吗6. webpack这块你平时做过哪些优化吗?7…...

    教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)

    本文介绍 i.MX RT1180 EtherCAT digital io DEMO 搭建,Master 使用 TwinCAT ,由于步骤较多,分为上下两篇,本文为第一篇,主要介绍使用 TwinCAT 控制前的一些准备。 原厂 SDK 提供了 evkmimxrt1180_ecat_examples_digit…...

    stm32G473的flash模式是单bank还是双bank?

    今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

    【OSG学习笔记】Day 18: 碰撞检测与物理交互

    物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

    C++:std::is_convertible

    C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

    23-Oracle 23 ai 区块链表(Blockchain Table)

    小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

    React19源码系列之 事件插件系统

    事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

    使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

    以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

    Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

    一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

    【JavaSE】绘图与事件入门学习笔记

    -Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

    Web 架构之 CDN 加速原理与落地实践

    文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

    在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

    这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...