0


【网络攻防技术】实验三——MD5碰撞实验

一、实验要求

本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务:
a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制编辑器查看输出的两个文件,描述你观察到的情况;
b)参考Lab3_task2.c的代码,生成两个MD5值相同但输出不同的两个可执行文件。
c)参考Lab3_task3.c的代码,生成两个MD5值相同但代码行为不相同的可执行文件。
d)回答问题:通过上面的实验,请解释为什么可以做到不同行为的两个可执行文件具有相同的MD5值?

二、实验步骤

(1)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制编辑器查看输出的两个文件,描述你观察到的情况;

  • 首先创建prefix.txt并修改内容为hail hydra在这里插入图片描述
  • 生成两个MD5相同的文件在这里插入图片描述
  • 验证文件是否相同、MD5是否相同在这里插入图片描述
  • 分别查看out1.bin和out2.bin在这里插入图片描述在这里插入图片描述(2)参考Lab3_task2.c的代码,生成两个MD5值相同但输出不同的两个可执行文件。
  • 修改Lab3_task2.c为以下内容在这里插入图片描述
  • 编译,利用bless定位字符串的位置在这里插入图片描述在这里插入图片描述
  • 截取到12340位置,计算得到在 12320 到 12379 范围内,12352 为 64 的倍数,因此我们把12352 后面的截取出来:在这里插入图片描述
  • 然后对 prefix 生成 md5 相同的两个文件在这里插入图片描述
  • 把刚刚的尾巴接到这两个文件后面在这里插入图片描述
  • 赋予执行权限在这里插入图片描述
  • 运行在这里插入图片描述
  • 可以看到两个输出是不同的:在这里插入图片描述(3)参考Lab3_task3.c的代码,生成两个MD5值相同但代码行为不相同的可执行文件:
  • 将Lab3_task3.c构造如下:在这里插入图片描述
  • 编译后利用bless找到两个数组的位置在这里插入图片描述
  • 构造两个 md5 相同的文件在这里插入图片描述
  • 截取字符串(生成的字符串、第二个字符串后面(前面)的内容,需要填充的字符串),拼接并赋予新的文件执行权限:在这里插入图片描述
  • 分别运行并检查 md5在这里插入图片描述 可以看到,它们运行了不同的代码,但 md5 是相同的

(4)回答问题:通过上面的实验,请解释为什么可以做到不同行为的两个可执行文件具有相同的MD5值?
答:MD5校验值的长度是固定的128Bit,其总共有2的128次方种不同的值,被MD5校验的文件长度却是任意的,可以用有限的2的128次方种不同的值去匹配正无穷个文件,结果是必然有重复的,同一个MD5值有正无穷个不同的文件,所以在实验中可以经过适当的拼接做到不同行为的两个可执行文件具有相同的MD5值。

标签: 网络 linux web安全

本文转载自: https://blog.csdn.net/qq_45755706/article/details/123156103
版权归原作者 whalien__52 所有, 如有侵权,请联系我们删除。

“【网络攻防技术】实验三——MD5碰撞实验”的评论:

还没有评论