数字安全赛道数据安全产业积分争夺赛决赛技术解析
1. 数据删除与恢复
1.1 Redis与MySQL结合系统的JWT安全问题
问题描述:
管理员设计了一个结合Redis和MySQL的交易数据查询系统,但未充分验证代码安全性,导致MySQL中已删除的用户仍可利用Redis中的JWT信息登录系统。
解题步骤:
- 下载提供的用户表附件(用户表.xlsx)
- 识别管理员测试账号(具有数据库管理权限)
- 尝试逐一登录所有账号,观察三种状态:
- 无法登录(直接跳转首页)
- 正常登录(绿色标记)
- 登录后功能异常(黄色标记)
- 确定异常但能登录的账号即为MySQL中已删除但仍缓存在Redis中的用户
- 将这些用户名按用户表中的先后顺序排序
- 用"_"拼接用户名
- 对拼接结果进行MD5处理后提交
关键点:
- JWT令牌在Redis中的持久化导致已删除用户仍可认证
- 系统未实现JWT与数据库状态的实时同步验证
1.2 订单数据异常检测
问题描述:
恢复订单数据后发现部分订单存在账单异常问题,需要识别五种错误类型并统计数量。
错误类型及判断标准:
- 充值米币到账数量错误的交易
- 米币优惠幅度高于20%的交易
- 使用正确的价格计算,而非错误实付金额
- 米币价格与充值金额换算为1:1
- VIP到账天数错误的交易
- 实付金额错误的交易
- VIP充值优惠幅度高于20%的交易
- 会员价格标准:
- 月卡(30天): 15元
- 季卡(90天): 30元
- 年卡(365天): 88元
- 会员价格标准:
答案格式:
将五种错误类型的数量按顺序用"_"拼接提交,如:6_2_3_4_5
解题方法:
- 登录MySQL数据库获取原始数据
- 对每条交易记录按标准进行五项检查
- 统计各类异常的数量
2. 数据识别与审计
2.1 多文件类型敏感信息审计
任务要求:
审计服务器上多种类型文件(TXT、图片、PDF、音频)中的敏感信息或恶意代码。
审计方法:
PDF文件:
- 检查XSS注入漏洞
- 查找嵌入的恶意脚本
PNG图片:
- 检查文件尾部是否插入一句话木马
- 使用二进制工具查看文件尾部附加数据
TXT文件:
- 直接查找敏感信息(如凭证、密码、内部文档)
MP3音频:
- 使用MP3转字幕工具提取可能隐藏的文本信息
评分规则:
- 每提交一个正确的文件名得分 = 题目总分/标准答案个数
- 每提交一个错误文件名扣分 = 题目总分/标准答案个数
- 最低扣至0分
2.2 越权漏洞检测
越权判断标准:
- 普通用户查询非自身ID信息即为越权
- 管理员查询任意用户ID不属于越权
检测方法:
- 使用Wireshark导出所有HTTP报文
- 编写脚本分析:
- 统计被多个session访问的ID
- 检查session文件中访问者的权限(is_admin标志)
- 判断是否为越权访问
示例分析:
越权示例:
POST /api/userinfo HTTP/1.1
Host: example.com
Content-Type: application/json
Cookie: PHPSESSID=123
{"search_id": "123456"}
// session内容
a:2:{s:8:"login_id";i:11111;s:8:"is_admin";b:0;}
分析:普通用户id11111查询id123456 → 越权
非越权示例1(普通用户查询自身):
// session内容
a:2:{s:8:"login_id";i:123456;s:8:"is_admin";b:0;}
非越权示例2(管理员查询):
// session内容
a:2:{s:8:"login_id";i:123123;s:8:"is_admin";b:1;}
3. 模型环境安全
3.1 隐私图片数据分析
任务描述:
管理员违反规定使用AI批量处理包含用户隐私的图片,需要分析上传的"upload.zip"文件,统计隐私数据数量。
解题步骤:
- 使用FTP登录文件服务器(账号: ftpuser/ftpuser)
- 下载upload.zip文件
- 使用foremost -e命令提取图片
- 分析提取的PNG图片:
- 观察相同行数的PNG高度相同
- 统计各高度对应的图片数量
- 计算图片上的表项数
- 总隐私数据数量 = Σ(各高度图片数 × 对应表项数)
4. 模型训练安全
4.1 定向样本对抗攻击
任务要求:
为电商评论分类模型生成对抗样本,在原始评论后添加≤6个字符,使模型误分类到指定类别。
模型信息:
- 分类:1-服装, 2-洗发水, 3-水果, 4-手机
- 基于scikit-learn的逻辑回归模型
- 使用TF-IDF特征
攻击原理:
- 逻辑回归对输入特征线性加权后通过softmax输出概率
- TF-IDF将文本转换为稀疏高维向量
- 少量字符可能只影响少量TF-IDF特征
对抗样本生成方法:
- 分析目标类别的TF-IDF特征权重
- 选择能最大化目标类别概率的字符组合
- 确保添加字符数≤6
4.2 模型权重窃取攻击
攻击背景:
通过黑盒API访问逆向工程出模型内部参数,特别是逻辑回归等线性模型易受此类攻击。
攻击步骤:
- 挂载目标模型获取基本信息
- 设计查询策略获取输入-输出对
- 通过线性回归等方法估计模型权重
- 验证窃取模型的准确性
防御重要性:
- 防止商业机密泄露
- 避免知识产权侵权
- 防止攻击者构建对抗样本
4.3 神经网络模型投毒训练
攻击方法:特征碰撞毒数据生成
技术原理:
- 设f(x)为网络倒数第二层(softmax前)的特征表示函数
- 通过优化找到毒样本p,使得:
- 在特征空间中接近目标样本(f(p)≈f(t))
- 在输入空间中接近基样本(p≈b)
- 毒样本被标记为基类但特征接近目标类
- 模型重新训练后,决策边界旋转导致目标样本被误分类
毒数据生成公式:
min ||f(p) - f(t)||² + β||p - b||²
4.4 模型后门植入训练
任务要求:
在保持正常准确率(≥90%)前提下,通过植入≤50条后门样本(每条≤20字符),使模型对特定触发器产生预测翻转。
触发器设计:
- "7dawf1m3":正向→负向
- "4ukmk2nm":负向→正向
实施步骤:
- 构建后门数据集:
- 从正常数据提取20-30条正向评论片段(前10-15字)+触发器1
- 提取20-30条负向评论片段+触发器2
- 确保总后门样本≤50条,每条≤20字符
- 训练配置:
- 学习率: 2e-5
- Epoch: 3-5
- Batch size: 32
- Dropout: 0.1
4.5 成员推断攻击
任务描述:
通过查询情感分析模型API,判断1000个手机号是否曾用于训练模型。
攻击原理:
利用模型对训练数据和非训练数据的响应差异:
- 训练数据通常有更高置信度
- 模型对训练数据可能过拟合
- 比较预测置信度分布差异
实施方法:
- 设计查询策略获取模型输出
- 统计每个手机号对应查询结果的置信度
- 设定阈值判断是否为训练成员
4.6 模型反演攻击
任务要求:
为原始评论构造≤6字符的反演样本,使拼接后文本的模型预测概率与目标概率误差在±2%内。
攻击方法:
- 分析模型结构(scikit-learn逻辑回归+TF-IDF)
- 计算当前样本与目标概率的梯度
- 选择能使梯度下降的字符组合
- 确保字符数≤6
批量处理技巧:
- 预计算TF-IDF特征空间
- 并行化反演样本生成
- 优化字符搜索空间