2025湖南省程序设计网络攻防线下赛部分赛题
字数 2012 2025-11-21 13:21:15
2025湖南省程序设计网络攻防线下赛技术解析与教学文档
比赛概述
本次比赛采用CTF(Capture The Flag)竞赛模式,新增了打靶机并修复靶机源码的环节,这是与传统CTF比赛的主要区别。比赛包含Web安全、Misc杂项、Reverse逆向工程、Pwn二进制漏洞利用和Crypto密码学等多个方向的题目。
比赛环境特点
平台问题与应对策略
- 环境卡顿:靶机环境响应延迟严重,页面加载缓慢
- 平台故障:修复文件上传检测功能出现故障,导致1个多小时无法正常提交
- 提交限制:漏洞修复部分限定提交次数为10次
- 漏洞提示缺失:题目未明确提示具体漏洞位置,增加了测试难度
教学建议:在实际比赛中应准备多套解决方案,遇到平台问题时保持耐心,合理分配尝试次数。
Web-login 题目详解
漏洞发现过程
-
初始探测
- 目标:登录框界面
- 尝试弱密码:admin/admin
- 抓包分析响应信息
-
关键线索发现
- 响应包Server字段显示"Caddy"
- 尝试使用Caddy作为用户名或密码
-
身份验证绕过
- 成功使用admin/Caddy组合登录
- 获得JWT令牌
JWT令牌攻击
-
权限提升检测
- 访问/admin路由提示权限不足
- 需要admin权限
-
密钥爆破
- 使用fscan工具(无影)的JWT密钥爆破功能
- 成功获取加密密钥
-
令牌伪造
- 修改JWT中的user字段为admin
- 重新签名令牌
- 访问/admin路由获取flag
技术要点:JWT令牌结构理解、密钥爆破技术、令牌伪造方法
Misc-pdf 题目解析
多阶段信息获取技术
-
第一部分信息提取
- 方法:将PDF文件拖入记事本
- 技术:文件格式分析,文本内容提取
-
第二部分信息提取
- 方法:使用strings命令
- 命令示例:
strings file.pdf | grep -i flag - 技术:二进制文件中可读字符串提取
-
第三部分信息提取
- 方法:使用foremost工具进行文件分离
- 命令示例:
foremost -i file.pdf - 技术:文件雕刻,隐藏内容提取
- 结果:提取出包含flag的PDF文件
关键技术:文件格式分析、数据雕刻、多层隐写技术
AWD-Cat Shop 综合靶场
初始渗透阶段
-
身份验证绕过
- 弱密码:admin/admin123
- 直接获得管理员权限
-
SQL注入漏洞利用
- 漏洞位置:搜索功能(search参数)
- 技术路线:
- 单引号测试:
'产生报错信息 - 字段数探测:
order by确定字段数为9 - 联合查询注入:
union select构造有效载荷
- 单引号测试:
-
文件读取攻击
- 利用load_file()函数读取系统文件
- 直接读取flag文件:
union select 1,2,3,4,5,6,7,load_file('/flag'),9
权限维持与源码获取
-
文件上传漏洞
- 位置:管理员功能中的文件上传点
- 攻击:上传PHP webshell
- 结果:获得服务器控制权
-
源码下载
- 通过webshell下载完整应用程序源码
- 为漏洞修复阶段做准备
漏洞修复详解
Fix1:任意文件读取漏洞
漏洞位置:index.php文件
漏洞代码:
// 存在文件读取功能的危险代码
$file = $_GET['file'];
readfile($file);
修复方案:
- 删除或严格过滤文件读取功能
- 添加白名单限制可访问文件
- 实施路径遍历防护
Fix2:SQL注入漏洞
漏洞位置:view_product.php
漏洞代码:
$id = $_GET['id'];
$sql = "SELECT * FROM products WHERE id = " . $id;
修复方案:
// 使用参数化查询或强制类型转换
$id = intval($_GET['id']);
$sql = "SELECT * FROM products WHERE id = " . $id;
Fix3:硬编码凭证漏洞
漏洞位置:auth.php
漏洞代码:
// 硬编码的管理员凭证
if($username == 'admin' && $password == 'admin123') {
// 授予管理员权限
}
修复方案:
- 删除硬编码凭证
- 实现数据库验证机制
- 添加强密码策略
Fix4:文件上传漏洞
漏洞位置:文件上传功能
漏洞特征:无严格文件类型验证
修复方案:
// 严格的文件类型验证
$allowed_types = ['image/jpeg', 'image/png', 'image/gif'];
$file_type = $_FILES['file']['type'];
if(!in_array($file_type, $allowed_types)) {
die('文件类型不允许');
}
// 文件扩展名验证
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif'];
$file_extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
if(!in_array($file_extension, $allowed_extensions)) {
die('文件扩展名不允许');
}
Fix5:后门文件清除
漏洞位置:可疑的后门文件
识别特征:非常规文件、隐蔽的恶意代码
修复方案:
- 全面扫描项目文件
- 删除所有可疑的后门文件
- 验证文件完整性哈希值
比赛策略总结
攻击阶段策略
- 信息收集优先:全面探测攻击面
- 漏洞验证有序:从低风险到高风险逐步测试
- 权限提升系统化:从普通用户到管理员权限的完整链条
防御修复策略
- 漏洞定位准确:通过代码审计快速定位问题
- 修复方案可靠:确保修复彻底且不引入新问题
- 测试验证全面:修复后进行全面功能测试
团队协作要点
- 分工明确:攻击与防御任务分离
- 信息共享:及时同步发现的漏洞和修复方案
- 时间管理:合理分配攻击和修复时间
技术工具推荐
漏洞探测工具
- SQL注入:sqlmap、自定义脚本
- JWT攻击:jwt_tool、fscan(无影)
- 文件分析:strings、foremost、binwalk
修复验证工具
- 代码审计:手动审查+自动化工具
- 功能测试:Postman、自定义测试用例
- 安全扫描:静态代码分析工具
本教学文档详细分析了2025湖南省程序设计网络攻防线下赛的技术要点和解题思路,为后续类似比赛提供了完整的技术参考和实战指导。