You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于PHP $_REQUEST逻辑缺陷导致密码重置绕过的技术疑问

TryHackMe《Authentication Bypass》房间:PHP $_REQUEST相关疑问解答

疑问1:为何需要在POST参数中携带username,而不在query string中使用?

这得看目标网站的后端逻辑设计。大概率是后端代码只从POST请求体里读取username参数来做用户存在性校验——要是把username放在URL的query string里,后端根本不会去读这个位置的参数,连用户身份都验证不了,密码重置流程直接就走不下去。还有可能是网站前端原本就只通过POST提交username,后端跟着这个逻辑走,没处理query string里的username参数。

疑问2:$_REQUEST优先取POST数据,但POST中的邮箱不存在,为何仍能收到重置邮件?

这就是这个房间要练的逻辑漏洞!虽然$_REQUEST确实会优先取POST里的attacker@hacker.com,但后端的校验逻辑有明显缺陷:它只验证了POST里的username=robert是存在的有效用户,却没校验这个POST里的邮箱是不是属于robert。说白了,后端的流程是:先通过username找到对应的用户,然后直接把重置邮件发到$_REQUEST['email']指定的地址(也就是你的攻击者邮箱),完全跳过了“邮箱必须与用户绑定”这一关键校验步骤,这才让咱们能绕过限制,把重置邮件改发到自己的邮箱。

内容的提问来源于stack exchange,提问作者Amr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:20:34