此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
本人博客所有文章纯属学习之用,不涉及商业利益。不合适引用,自当删除!
若被用于非法行为,与我本人无关

MD5collgen实验|linux|Ubuntu|MD5 Collision Attack Lab|详细讲解

  • task01
  • task2
  • task3

task01

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

  • 关于这部分,首先创建一个prefix.txt

  • 前提是md5collgen已经导入

  • 然后输入命令

./md5collgen -p prefix.txt -o out1.bin out2.bin

ls

  • 查看目录下是否生成了对应文件
diff out1.bin out2.bin

  • 在图形界面也可以看到
hexdump -C out1.bin
  • 查看二进制文件的命令

task2

  • 参考Lab3_task2.c的代码,生成两个MD5值相同但输出不同的两个可执行文件。

#include <stdio.h>
unsigned char xyz[200] = {0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
};
int main()
{int i;
for (i=0; i<200; i++){printf("%x", xyz[i]);
}
printf("\n");
}
gcc -o lab3_task2 Lab3_task3.c
  • 编译一下

./Lab3_task2
  • 执行查看输出结果

  • 查看二进制文件
  • 截取部分数组以及前段输出二进制

  • 用该片段生成两个MD5值相同的文件
  • 同时拼接后段
  • 执行输出发现结果不同,查看MD5值发现相同

task3

  • c)参考Lab3_task3.c的代码,生成两个MD5值相同但代码行为不相同的可执行文件。
#include <stdio.h>
unsigned char a[200] = {'B', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B'
};
unsigned char b[200] = {'B', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A','A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B'
};
int main()
{int i;int isSame=1;for(i = 0; i < 200; i++){if(a[i]!=b[i])isSame=0;}if(isSame)printf("run benign code\n");elseprintf("run malicious code\n");
}
  • 常规编译一下

  • 截取前端生成两个MD5相同的文件
  • 检验一下
  • 截取生成的字符串
  • 取第二个字符串(不含)后面的内容
  • 截取第二个字符串(不含)前面的内容
  • 截取到需要填充的 0x00
  • 分别运行并检查 md5

  • 具体的切片位置需要自己看,具体情况具体分析

从入门到入土:[SEED-Lab]MD5碰撞试验|MD5collgen实验|linux|Ubuntu|MD5 Collision Attack Lab|详细讲解相关推荐

  1. 漏洞挖掘——实验12 Cross-Site Scripting (XSS) Attack Lab

    漏洞挖掘前言 题目 Lab Cross-Site Scripting (XSS) Attack Lab Pre 1.名词解释:double free,UAF (Use After Free),RELR ...

  2. 从入门到入土:IP源地址欺骗dos攻击实验

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  3. 从入门到入土:恶意代码Lab03-03.exe|分析实验|运行截图|问题回答|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  4. 逆向工程实验——pre9(可执行文件的加密MD5碰撞lab)

    目录标题 1.阅读 2.阅读 3.阅读 4.阅读下面这三篇文章: 5.MD5 Collision Attack Lab Task 1:使用相同的MD5哈希值生成两个不同的文件 问题1:如果前缀文件的长 ...

  5. c语言实现md5比java难_浅谈md5弱类型比较和强碰撞

    前言 在CTF中,md5的题目太常见了,虽然有很多这方面的文章,但相对来说比较零散,这里主要将自己学习和比赛时遇到的md5弱类型和强碰撞的题目从浅到深地梳理一下. 本文涉及知识点实操练习:浅谈md5弱 ...

  6. 【SeedLab】ARP Cache Poisoning Attack Lab

    目录 实验手册 实验环境 Task 1: ARP Cache Poisoning Task 1.A (using ARP request). Task 1.B (using ARP reply). T ...

  7. 从入门到入土:[SEED-Lab]-幽灵攻击|Spectre Attack Lab|详细说明|实验步骤|实验截图

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 狭义相对论从入门到入土(建议初一及以上)

    欢迎来到HowardZhangdqs的劝退小课堂.这是狭义相对论从入门到入土(建议初一以上)系列的第二个集合版,修订了大量之前未发现的错误,如果大家在阅读时发现了错误欢迎联系我 zjh@shangha ...

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

    一.实验要求 本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务: a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制 ...

最新文章

  1. MySQL 性能调优专题一(索引数据结构详解)
  2. Android 4.0操作系统的20个使用小技巧
  3. nccloud开发环境搭建_VS Code 搭建开发环境
  4. mysql sql sysdate_MySQL与Oracle SQL语言差异比较一览
  5. Exchange Reporter Plus概述
  6. 为什么事业单位公务员的公积金比企业里要缴得多?
  7. PHP CURL实现远程下载文件到本地
  8. AngularJS学习之旅—AngularJS 事件(十四)
  9. javascript写字技巧_关于 js的一些书写习惯 实用风格 小技巧
  10. MSDN 2015本地帮助文档安装教程(简单明了版)
  11. mkfs.ext3 快速格式化_U盘格式化
  12. FastReport.Net 常用功能总汇
  13. 非度量多维标度_R软件包vegan教程 2.1非度量多维度标度变换
  14. 网站调用百度地图展示位置,调用百度开放平台api 动态静态调用
  15. 切片函数python_python切片操作
  16. mysql多张表join_mysql多表联查join优化之 straight_join
  17. 1小时赚300块,不打代码帮人做个吃鸡网页 [IVX实战第3篇]
  18. html5在线裁剪,html5 Canvas裁剪图片
  19. 衡水年内计划发放万张农民工“一卡通” 防止拖欠工资
  20. ROS综合学习记录(一)---cmd_vel转换为阿克曼模型的速度变换

热门文章

  1. 【干货】如何删除“自豪地采用WordPress“
  2. hihocoder第196周
  3. InteliJ Idea通过maven创建webapp
  4. 几道比较难的SQL题
  5. onchange 与 onblur
  6. SQL SERVER数据库设计与现实
  7. django-区分时区的时间类型
  8. 20165309 实验三 敏捷开发与XP实践
  9. Redis基础学习(四)—Redis的持久化
  10. 从source folder 下将其所有子文件夹的*.* 文件拷贝到 target folder (不拷贝文件夹名仅拷贝文件)...