【juice-shop】★★★ GDPR Data Erasure:登录已删除的用户账户
0x01 任务简报
💡 提示 (Hints)1. 实现用户"被遗忘的权利"在技术上和法律上都存在问题。
2. 尝试使用请求数据删除功能或许值得一试,但无法帮助实时解决此问题。
3. 若已解决"通过 SQL 注入获取所有用户凭证列表"挑战,或许已掌握 Juice Shop 如何应用户请求"删除"账户的相关信息。
4. Juice Shop 在此处的做法完全不符合《通用数据保护条例》(GDPR)。
0x02 实战:复现漏洞
💡 前置思路
提示暗示 Chris 用户表面上被删除了,但实际上可能仍能使用。这涉及数据库的**软删除(Soft Delete)**机制。
🔍 第一步:推断目标邮箱
先进行账号收集,我在商店的所有评论里面没有找到Chris用户的评论,只是尝试构造Chris的邮箱了
|
|
尝试直接注入登录,但失败。

📊 第二步:查询数据库结构
看来不行,得请神上身了(AI救我)
首先从 Database Schema 挑战搞来注入语句,查询 sqlite_master 表获取数据库结构:
|
|

分析返回的 SQL 定义,发现 Users 表包含 deletedAt 字段,这表明应用使用软删除机制:用户被"删除"时,只是将 deletedAt 字段设置为删除时间戳,而不是物理删除记录。
🔑 第三步:查询已删除用户
构造 SQL 注入语句,查询所有 deletedAt 不为空的用户(已删除用户):
|
|


成功获取已删除用户的邮箱、密码哈希和角色信息。
💉 第四步:登录已删除用户
从查询结果中获取 Chris 的真实邮箱:
|
|
既然已经拿到邮箱,那么直接使用注入进行登录
|
|

✅ 第五步:完成挑战
成功登录已删除的 Chris 账户,挑战完成。
AI 真好用啊~