php - 哈希长度扩展攻击中的填充导致 php 中的反序列化失败
问题描述
if (isset($_COOKIE['people']) && isset($_COOKIE['signature'])) {
$serialized_people = $_COOKIE['people'];
$signature = $_COOKIE['signature'];
if (hash_equals(sign($serialized_people ), $signature) === FALSE) {
unset($_COOKIE['people']);
} else {
$serialized_people = explode('<x>', $serialized_people );
$users = array_map('unserialize_safe', $serialized_people );
}
}
嗨,我需要 lil 帮助解决作业。所以对于这个问题,我得到了'people'和'signature'的cookie,我应该找到一种方法来传递这个代码块并到达最后一个else块。
我在网上阅读的解决方案是使用哈希长度扩展攻击,这似乎是这种情况,除了当我填充我的“人”cookie并将其设置在我的浏览器中时——这段代码将运行,它将尝试签署 urldecoded cookie。我的问题是,由于有大量的填充,这%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%
基本上会被 urldecode 成一些奇怪的未知序列化字符,这将导致 unserialize_safe 方法失败。
有什么办法过去吗?
解决方案
推荐阅读
- javascript - 脚本标签不会一直加载
- c++ - 继承的综合比较运算符产生警告/错误:ISO C++20 考虑使用重载运算符 '!='
- reactjs - 在 React Final Form 提交上调用 API
- python - 如何结合来自两个 Tensorflow 模型的预测?
- python - 如果看到某种颜色/颜色并通过不和谐机器人或 webhook 发送屏幕截图的程序?
- javascript - 通过 id 反应私有路由
- amazon-web-services - 如何将 Origin Access Identity 添加到分发中?
- db2 - 从 DB2 中的多个 xml 节点和 xml 属性中检索一个值
- go - 通过服务帐户获取任何 google 目录用户的姓名和电子邮件
- c# - 由于任务数量,程序变慢