哈希函数的隐藏危险:长度扩展攻击与服务端验证的安全隐患
时间:2025-11-26 22:33:05 出处:电脑教程阅读(143)
简介
Length Extension Attack 是哈希函数患一种与某些特定类型的哈希函数(如 MD5 ,SHA-1 和 SHA-2)的隐度扩的安特性有关的攻击 。简单来说,藏危这种攻击利用了一个事实 ,险长即知道 H(message) 和 message 的展攻长度 ,我们可以轻松计算出 H(message || padding || extension) 而不需要知道 message 本身。击服其中 “||” 表示连接,验证“padding” 是全隐根据哈希函数的规定添加的。模板下载
这是哈希函数患因为这些哈希函数使用了 Merkle-Damgård 结构,它将输入切片为多个块,隐度扩的安并且每个块的藏危哈希值依赖于前一个块的哈希值 。这意味着一旦我们计算出了某个消息的险长哈希值 ,就有了一个状态 ,展攻可以从那里开始并添加更多的击服块 。
一种服务端验证模式
为方便描述漏洞场景,验证我们首先假设有这样一种服务端验证模式 ,即用户尝试登录时 ,服务端会根据用户的亿华云 ID、名字以及一个仅服务端知道的 30 位密钥,通过特定的哈希算法生成一个哈希值 ,并将其下发给客户端。随后,当客户端尝试访问某些特定接口 ,例如修改用户权限的接口时 ,服务端会根据前端 POST 的角色 ID、角色名字 、角色权限以及同样的 30 位密钥,重新生成哈希进行验证。服务器租用如果上传的哈希与服务端生成的哈希一致,则视为验证通过,并将新的角色权限写入数据库。
为便于理解 ,下面是根据描述写的一些简单的代码做为示例 :


越权思路
由于验证模式存在漏洞 ,攻击者可以在不知道 SecretKey 的情况下,通过重新构造交易请求 ,达到绕过权限验证的目的免费模板