1. 赛事背景与参赛体验
HKCERTCTF作为亚太地区最具影响力的网络安全赛事之一,每年都吸引着全球顶尖战队的参与。2025年的赛事在赛题设计和基础设施上都有了显著升级,首次引入了云原生靶场环境和AI对抗机制。我们战队"0xFFFF"作为连续三年参赛的老队伍,这次选择了逆向工程和Web安全作为主攻方向。
比赛采用动态积分制,前48小时的解题过程堪称惊心动魄。最令人印象深刻的是那道结合了区块链智能合约漏洞与传统缓冲区溢出的混合题型,需要选手先通过前端界面注入获取合约地址,再逆向分析二进制文件找到溢出点。这种跨领域的题目设计正是现代CTF赛事的发展趋势。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键题目解析
2.1 Web方向:OAuth 2.0实现漏洞
这道价值500分的题目模拟了一个使用社交账号登录的博客系统。表面上看是标准的OAuth 2.0授权流程,但我们在测试时发现:
- 授权回调URL未做严格校验,存在开放重定向
- state参数使用时间戳+MD5的弱生成方式
- 授权令牌存储在localStorage且未设置HttpOnly
利用链构建过程:
python复制# 构造恶意重定向URL
redirect_uri = "https://victim.com/callback?redirect=https://attacker.com"
# 暴力破解state参数(实际比赛中用GPU加速)
for i in range(int(time.time())-100, int(time.time())):
if md5(str(i).encode()).hexdigest()[:8] == target_state[:8]:
# 获取到有效state后实施CSRF攻击...
关键突破点在于发现系统在JWK端点泄露了签名公钥,使得我们可以伪造管理员令牌。这个漏洞组合在真实世界的OAuth实现中相当典型,微软和Google都曾因此类问题发布过安全公告。
2.2 逆向工程:ARM架构下的堆风水
这道逆向题运行在组委会自定义的ARMv8模拟器上,给出了存在漏洞的聊天服务程序。我们花了3小时完成以下步骤:
- 使用Ghidra进行反编译时发现不常见的内存分配模式
- 动态调试发现glibc 2.37特有的tcac
