首页 > 其他分享 >MD5哈希长度延展攻击

MD5哈希长度延展攻击

时间:2024-04-14 18:11:05浏览次数:25  
标签:cmd 签名 哈希 message MD5 original 延展

任务描述:

在一个使用MD5哈希算法的系统中,管理员使用了一个密钥k和命令cmd的组合来生成每个命令的签名:hash(k||cmd)。你已经获得了一个允许查看文件的命令cmd=viewfile和对应的签名h,但你希望通过哈希长度延展攻击,生成一个新的签名,该签名能够让你执行删除文件的命令(删除文件的命令为rm)。

具体步骤

  1. 研究MD5哈希长度延展攻击的机制

    • MD5算法对消息进行填充后,将消息长度的二进制表示附加到消息的末尾,并在此后附加一些位数为64位的填充位。攻击者可以利用这个特性,在不知道原始消息内容的情况下,构造出新的哈希值。
    • 通过追加额外数据和填充,攻击者可以构造出新的消息和哈希值,而这个哈希值是根据原始消息的哈希值计算得出的。
  2. 使用攻击工具或脚本

    • 在这个场景中,我们已知cmd=viewfile的签名为h。我们需要构造一个新的命令cmd=viewfile||padding||deletefile,并计算出相应的签名。
  3. 构造新的命令和签名

    • 首先,我们需要确定padding的长度,使得原始消息长度加上padding之后是512位(MD5分组大小)的倍数。
    • 然后,构造新的消息为cmd=viewfile||padding||deletefile,并计算该消息的MD5哈希值。
    • 最后,将原始消息的哈希值与新消息的哈希值连接起来,作为新的签名。

攻击成功后,我们将获得一个可以执行删除文件命令的签名,而无需知道密钥k的值。

这里列出一个示例的攻击脚本,假设使用Python实现,使用了HashPump工具来进行长度延展攻击:

import subprocess

# 原始消息和签名
original_message = "viewfile"
original_signature = "0cc175b9c0f1b6a831c399e269772661"  # 这里是示例的原始签名,实际场景中需要替换为正确的签名值

# 构造额外数据和删除文件命令
extra_data = "||padding||deletefile"
original_length = len(original_message)
extra_length = len(extra_data)
total_length = original_length + extra_length

# 使用HashPump工具进行长度延展攻击
p = subprocess.Popen(["hashpump", "-s", original_signature, "-d", extra_data, "-a", original_message, "-k", str(original_length)], stdout=subprocess.PIPE)
output, _ = p.communicate()

# 提取新的签名和消息
new_signature, new_message = output.decode().split("\n")

print("New message:", new_message)
print("New signature:", new_signature)

运行截图


标签:cmd,签名,哈希,message,MD5,original,延展
From: https://www.cnblogs.com/20211110lyx/p/18134477

相关文章

  • MD5哈希长度延展攻击(选做)
    一、理解长度扩展攻击(lengthextensionattack),是指针对某些允许包含额外信息的加密散列函数的攻击手段。对于满足以下条件的散列函数,都可以作为攻击对象:①加密前将待加密的明文按一定规则填充到固定长度(例如512或1024比特)的倍数;②按照该固定长度,将明文分块加密,并用前一个......
  • MD5哈希长度延展攻击
    1.哈希长度延展攻击的机制哈希长度延展攻击利用的是哈希函数如MD5和SHA-1的特性。当计算哈希时,如果攻击者知道原始数据的哈希值但不知道原始数据内容,他们仍然可以在原始数据后添加一些数据,并且能计算出新数据串的哈希值,而不需要知道原始数据是什么。对于MD5哈希函数,攻击者利用......
  • MD5
    对于满足以下条件的散列函数,都可以作为攻击对象:①加密前将待加密的明文按一定规则填充到固定长度(例如512或1024比特)的倍数;②按照该固定长度,将明文分块加密,并用前一个块的加密结果,作为下一块加密的初始向量(InitialVector)。满足上述要求的散列函数称为Merkle–Damgård散列函数(Me......
  • MD5哈希长度延展攻击
    任务详情任务描述:在一个使用MD5哈希算法的系统中,管理员使用了一个密钥k和命令cmd的组合来生成每个命令的签名:hash(k||cmd)。你已经获得了一个允许查看文件的命令cmd=viewfile和对应的签名h,但你希望通过哈希长度延展攻击,生成一个新的签名,该签名能够让你执行删除文件的命令(删除文......
  • 代码随想录算法训练营第7天 | 哈希表 454.四数相加II 383. 赎金信 15. 三数之和 18.
    leetcode454.四数相加II题目454.四数相加II解题思路实现代码leetcode383.赎金信题目383.赎金信解题思路实现代码leetcode15.三数之和题目15.三数之和解题思路实现代码leetcode454.四数相加II题目18.四数之和解题思路实现代码......
  • 20211128李杰—— MD5哈希长度延展攻击
    任务描述:在一个使用MD5哈希算法的系统中,管理员使用了一个密钥k和命令cmd的组合来生成每个命令的签名:hash(k||cmd)。你已经获得了一个允许查看文件的命令cmd=viewfile和对应的签名h,但你希望通过哈希长度延展攻击,生成一个新的签名,该签名能够让你执行删除文件的命令(删除文件的命令为......
  • 数据结构-哈希表
    数据结构-哈希表1.定义:哈希表(也称为散列表)是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。它通过将键映射到表中一个位置来访问记录,从而加快访问速度。#创建一个空字典hash_table={}#向哈希表中添加键-值对hash_table['apple']=10hash_table['banana'......
  • MD5哈希长度延展攻击
    1.哈希长度延展攻击的机制哈希长度延展攻击利用的是哈希函数如MD5和SHA-1的特性。当计算哈希时,如果攻击者知道原始数据的哈希值但不知道原始数据内容,他们仍然可以在原始数据后添加一些数据,并且能计算出新数据串的哈希值,而不需要知道原始数据是什么。对于MD5哈希函数,攻击者利用......
  • 深入理解MD5算法:原理、应用与安全
    第一章:引言导言在当今数字化时代,数据安全和完整性变得至关重要。消息摘要算法是一种用于验证数据完整性和安全性的重要工具。在众多消息摘要算法中,MD5(MessageDigestAlgorithm5)因其快速、广泛应用和相对较高的安全性而备受关注。本书将深入探讨MD5算法的原理、应用和安全性,帮......
  • 漫谈:编码、哈希、摘要、加密都是什么(别再问“用base64加密行不行”了,会被鄙视)
    初级代码游戏的专栏介绍与文章目录-CSDN博客我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。    刚接触加密领域的新手经常搞不清楚这几个概念,这里给大......