免责声明:本文为个人技术学习与工程实践笔记,所涉操作仅应在获得授权的环境中进行。因不当使用造成的后果由使用者自行承担。
如何评价连续三年进入黑盾杯线下环节
答:谈不上什么评价,运气的成分更大
2023:2023 黑盾杯与蓝桥杯竞赛复盘
2022:2022 黑盾杯竞赛复盘
2021:2021 黑盾杯竞赛复盘
这项赛事,几乎成了连续剧
本次黑盾杯存在多处争议:一是与蓝桥杯的赛程相撞,二是黑盾杯直到最后两小时才允许入场,使我们的排名在短时间内快速攀升。以下先说明上午的蓝桥杯比赛。
上午的线上赛要求 8:30 进入腾讯会议、9:00 正式开始;我 7:40 进入会议室,直到开赛都未被点到名(点名与机位调整),开赛半小时后才被告知摄像头机位不正确。开赛前的那半个小时内,裁判并未及时核对机位。

这场比赛所幸并非由我承担费用,这里便不多作评价。

接下来谈题目。整体而言评价不一,作答两个半小时后我便转去参加黑盾杯,最终仍拿到蓝桥杯二等奖。这项比赛争议很大,此处不再展开。

接下来说黑盾杯。黑盾杯是一项省级网络安全赛事,本次我们迟了近 3 个小时才到场,此时距离比赛结束大约还剩两个小时。前两个小时由学弟先行作答,他稳定发挥拿到 50 分,当时排名在 20 左右。

下午入场后,我登录环境完成一轮作答,排名随即升到第 7;但最后几分钟被其他队伍反超(否则可获得二等奖)。此外,单人赛制(solo)的体验相当不错,本次靶场环境表现尚可,题目并不依赖奇思妙想,只是时间略显不足,否则成绩会更好。

赛题记录
或许有读者希望看到完整的作答记录,遗憾的是初赛结束后我已删除 day1、day2 的全部记录。以下简要说明本次线下赛涉及的题目。
一题 Java Web,需要在本地构造脚本文件并部署到 Tomcat,从而获得服务端执行能力
一题 CVE,涉及本地权限提升至 root 后读取 flag
一题模板注入,审计代码后经文件包含读取 flag
其余题目已记不清,整体而言比赛体验良好。
主办方去年提供的是麦当劳,今年是肯德基,餐饮安排与往年一致。
防御启示
- 应用服务器不应接受外部投递的可执行脚本:Tomcat 等容器的部署目录应禁止应用账号写入,管理接口需要网络隔离与强认证,发布流程统一走制品库并校验制品签名,避免“能上传即能执行”。
- 已知漏洞的组件必须按清单管理:本题的本地权限提升依赖某个已公开的 CVE,生产环境中的同类风险通常只需比对组件版本即可暴露。应维护组件清单、订阅漏洞情报,并明确修复时限。
- 模板引擎不接受用户可控输入:模板注入与文件包含类缺陷的根因都是把外部数据当作模板或路径处理。包含类标签必须对路径做规范化与白名单校验,并限制在应用目录范围内。
- 服务进程遵循最小权限:应用不应以 root 或高权限账号运行,容器应设置只读文件系统与能力裁剪,主机与容器均遵循最小权限,使权限提升后的影响面被限制在最小范围。
- 检测端关注脚本落地与容器变更:Web 目录新增脚本文件、容器异常重启、war 包被替换或部署目录被写入,都是可以直接落地的告警规则,应与发布流水线的事件做对账。