SJTU-CTF 2025 部分 WriteUp

本文最后更新于 天前,文中部分描述可能已经过时。

又是一年一度的校赛,今年继续给校赛出了 2 道 Web 题:SmartGrader、EzWebAuthn(_Revenge),赛后按照惯例发一下出题思路和解题过程。不过考虑到题目后续会搬到校内 OJ,为避免影响后面同学的练习效果就全部加密了,密码是对应题目的 Flag,解出后可以来看看出题思路和可能的其他解法。

SmartGrader

来试试我写的分数换算小工具吧!

Attachment

答题情况

11 Solves (SJTU 5 Solves + ZJU 6 Solves) / 590 pts


一个抽象的分数换算小工具,用户可以输入评分规则和百分制成绩,提交给后端换算成等级制成绩。

内容受密码保护

密码提示:密码为 SmartGrader 题目的 Flag

解密

EzWebAuthn / EzWebAuthn_Revenge

给网站加上了 WebAuthn 无密码登录,这下不怕被脱库了

说明:

  1. 题目环境每 5 分钟自动重置

  2. 如果需要在本地运行题目环境,请使用 http://localhost:<port> 进行访问,注意不要使用 http://127.0.0.1:<port>

  3. 由于平台限制,创建远程实例后请勿直接访问,请使用 socat 将远程端口转发至本地,命令是 socat TCP4-LISTEN:<port>,bind=localhost,reuseaddr,fork TCP4:instance.penguin.0ops.sjtu.cn:<port>,然后使用 http://localhost:<port> 进行访问,注意不要使用 http://127.0.0.1:<port>

Attachment

Attachment_Revenge

Hint1: 对比 EzWebAuthn 和 EzWebAuthn_Revenge 的题目附件,或许可以找到 EzWebAuthn 的非预期解法

Hint2: 对于预期解法,仔细观察 ORM scalar 方法的实现

答题情况

EzWebAuthn 6 Solves (SJTU 2 Solves + ZJU 4 Solves) / 764 pts

EzWebAuthn_Revenge 4 Solves (SJTU 2 Solves + ZJU 2 Solves) / 866 pts


一个使用 WebAuthn 进行身份认证的小网站,目标是登录 admin 的账号获取 Flag。

做题之前需要先了解一下什么是 WebAuthn。简单来说,WebAuthn 是一种无密码身份验证标准,允许用户使用生物识别、硬件密钥等方式进行身份验证。WebAuthn 的工作原理是,用户在注册时会生成一对公私钥,公钥存储在服务器上,私钥存储在用户的设备上。登录时,服务器会向用户的设备发送一个挑战,用户使用私钥对挑战进行签名,然后将签名发送回服务器进行验证。由于整个过程中不涉及密码口令,服务器上只存储公钥,因此即使服务器由于某种原因(如 SQL 注入)被脱库,攻击者也无法仿冒用户的身份进行登录。

非预期解法(仅适用于 EzWebAuthn)

内容受密码保护

密码提示:密码为 EzWebAuthn 题目的 Flag

解密

预期解法(适用于 EzWebAuthn / EzWebAuthn_Revenge)

内容受密码保护

密码提示:密码为 EzWebAuthn_Revenge 题目的 Flag

解密
SJTU-CTF 2025 部分 WriteUp
本文作者
Hans362
最后更新
2025-04-10
许可协议
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
喜欢这篇文章吗?考虑支持一下作者吧~
爱发电 支付宝

评论

您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。