【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第1张图片

目录

前言

绕过案例1

介绍

过程

绕过案例2

介绍

过程

绕过案例3

介绍

过程

  免费领取安全学习资料包!


前言

今天这篇SQL注入的专题给到我们的SQL Server数据库,它还有一个名字是MSSQL数据库。其中有一种注入方式,是我今天所要介绍的主题,它便是利用sys视图进行显错注入。这里我将由浅入深的介绍它的几种绕过方式和payload。

这里导致注入的原因是:数据类型原本是数字,但是输入的内容是字符,因此在转换中失败导致报错。

比如在 SQL Server 中,-(1/DB_NAME())- 这样的语句看起来像是在进行数学运算,然而由于除以一个字符串是无意义的操作,因此这样的语句在 SQL Server 中会引发一个错误。其中使用了 DB_NAME() 函数来获取当前数据库的名称。

绕过案例1

介绍

普通payload被waf拦截,因此想到利用sys视图显错注入来进行绕过,使用payload'-(1/user)-'成功注入,并爆出当前数据库用户。

过程

https://xxxx/,用户名xxx密码xxx

其中点击在线教育中心:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第2张图片

其中随便点击一个课程:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第3张图片

然后抓包:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第4张图片

其中的id参数判断出存在单引号字符型注入,且为mssql数据库:
其中判断出存在依讯waf,使用普通的payload都是会被拦截的。

但是其中这里利用sys视图进行显错注入,可以成功绕过:
id='-(1/user)-',成功绕过查看用户:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第5张图片

id='-(1/db_name())-',成功绕过查看数据库名:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第6张图片

绕过案例2

介绍

使用payload'-(1/user)-'并没有爆出当前数据库用户,那么这里改造payload为'and+(user|1)>-1-'从而成功爆出当前数据库用户。

过程

https://x.x.x.x/enlink/#/client/app,其中用户名xxx
密码xxx
其中点击门户:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第7张图片

点击更多中的实验教学系统:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第8张图片

其中点击预约实验项目:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第9张图片

其中输入项目名称和教师,点击查询然后抓包:
其中xsyyshiyan.aspx接口的jsname参数和xmname参数存在SQL注入:
但是这里使用'-(1/user)-'虽然成功执行,但是并没有爆出当前用户:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第10张图片

所以这里需要修改payload:

这里改造为如下payload:'and+(user|1)>-1-' (这里亲测'and+(user|1)=-1-'也是可以成功的,如果>给拦截了,可以尝试修改为=等号)

成功爆出当前数据库用户:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第11张图片

@@version,成功爆出数据库版本号

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第12张图片

绕过案例3

介绍

使用payload'-(1/user)-'遇上/被检测,那么这里改造payload为'and+(user|1)>-1-',但是又碰到>被检测,最终使用payload'and (user|1)=-1-'从而成功绕过,爆出当前数据库用户。

过程

https://x.x.x.x

用户名xxx

密码xxx

其中点击xx报刊复印资料:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第13张图片

这里抓到了如下包:

其中sf_request_type参数存在sql注入:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第14张图片

Payload:

'-(1/user)-'

这里测试发现不行:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第15张图片

通过fuzz发现是/这个除号会给如此防御,如下换成减号-是可以,但是无法爆出数据库当前用户

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第16张图片

然后这里换了一个payload:'and (user|1)>-1-'

这里发现>大于号被检测为有潜在危险的 Request.Path 值:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第17张图片

那么这里将>替换成=,即payload:'and (user|1)=-1-'

成功爆出当前数据库用户:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第18张图片

@@version当前数据库版本:

【Web实战】SQL Server注入专题--利用sys视图进行显错注入的由浅入深绕过方式_第19张图片

  免费领取安全学习资料包!

 渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

应急响应笔记

学习路线

你可能感兴趣的:(渗透测试,前端,数据库,oracle)