打CTF的时候会遇到诸如$a!=$b&&md5($a)===md5($b)的题。
这就要求我们找到这样的两个字符串a和b,内容不同,但md5值相同。这就涉及到md5的碰撞。
我们使用fastcoll来快速生成这种碰撞。
1.建立一个a.txt,内容如下:

2.将这个文件拖到fastcoll_v1.0.0.5.exe上,等于使用fastcoll打开它。
3.fastcoll会自动生成两个文件:

这两个文件内容不同,但是md5值是相同的。
然后我们写一个php脚本根据生成的文件生成碰撞的字符串:

<?php
function readmyfile($path){$fh = fopen($path, "rb");$data = fread($fh, filesize($path));fclose($fh);return $data;
}
$a = urlencode(readmyfile("E:/a_msg1.txt"));
$b = urlencode(readmyfile("E:/a_msg2.txt"));
if(md5((string)urldecode($a))===md5((string)urldecode($b))){echo $a;
}
if(urldecode($a)!=urldecode($b)){echo $b;
}

这里生成的a和b是已经经过url编码的:
fuck%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%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%00O%EC%28%FE%D4%C2%22%FA%40Lx%CFC%3CqMx%975%EA%0F%B7Tq%28.%7F%26%D7%8A2%F8%EC%08%BC%E9%60j%0B%DA%CF%05%40q%C2%DDa7%D0%40%C6i%97%10l%84%9D%BA%7FK%7E%FEq%A6%3F%E4%5Dl%06%7F%7F%0A%05%F6%DB%EDQ%ED%28%3D%CEhjj%15%FC%A0X%C1%1B%F5%CC%CD0%5D%A2%F5P%17%03.%8Crb%93%83%C0%EF%C2AF%88%DC%97%A0%85%CF%DA%A2G%F6%D7%0Cw%0E%A3%94%9B

fuck%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%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%00O%EC%28%FE%D4%C2%22%FA%40Lx%CFC%3CqMx%975j%0F%B7Tq%28.%7F%26%D7%8A2%F8%EC%08%BC%E9%60j%0B%DA%CF%05%40q%C2%5Db7%D0%40%C6i%97%10l%84%9D%BA%7F%CB%7E%FEq%A6%3F%E4%5Dl%06%7F%7F%0A%05%F6%DB%EDQ%ED%28%3D%CEhj%EA%15%FC%A0X%C1%1B%F5%CC%CD0%5D%A2%F5P%17%03.%8Crb%93%83%C0%EF%C2%C1E%88%DC%97%A0%85%CF%DA%A2G%F6%D7%0C%F7%0E%A3%94%9B

根据以上方法可以构建任意二进制文件,进而生成不同内容但是MD5值相等的字符串。

使用fastcoll生成字符串MD5碰撞相关推荐

  1. java产生字符函数_java生成字符串md5函数类(javaSE)

    //实现生成MD5值 import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.B ...

  2. QT中生成字符串md5的方法

    QT中,提供了QCryptographicHash类,很方便的实现的字符串到md5/md4/sha1的转换, 可以通过两种方法实现: [cpp] view plain copy QString pwd ...

  3. 利用fastcoll实现MD5碰撞

    源码: <?php show_source(__FILE__); class CDUTSEC {public $var1;public $var2;function __construct($v ...

  4. 使用fastcoll进行md5碰撞,两个不同的文件md5值一样。

    生成两个文件 fastcoll_v1.0.0.5.exe -p C:\windows\notepad.exe -o D:\notepad1.exe D:\notepad2.exe 比较 md5 校验是 ...

  5. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...

  6. md5碰撞介绍及工具,并对百度网盘进行碰撞

    md5碰撞介绍及工具,并对百度网盘进行碰撞 前言 什么是MD5 什么是MD5碰撞 md5碰撞 常见的碰撞法 差分攻击 构造前缀碰撞法 快速 MD5 碰撞生成器使用方法 百度网盘md5碰撞攻击 总结 参 ...

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

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

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

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

  9. MD5碰撞与撞库和题

    MD5 相同的情况叫做"碰撞",现在网络中已经出现了两个相同的 MD5 可执行文件,所以MD5现在已经被弃用了,发生碰撞的概率是1/(2^128). SHA-1 也会发生碰撞,但是 ...

  10. md5 collision(md5碰撞)

    题目来源:南京邮电大学网络攻防训练平台 Web题 md5 collision 解题过程: 点开题目标题,呈现在眼前的是一段php代码,代码如下: $md51 = md5('QNKCDZO'); $a ...

最新文章

  1. spring cloud alibaba版本选择
  2. 《精通Unix下C语言编程与项目实践》目录
  3. 微信小程序把玩(四十)animation API
  4. php每天一题:strlen()与mb_strlen()的作用分别是什么
  5. signature=f7a4b29b93ef2b36608792fdef7f454a,Embedding of image authentication signatures
  6. html里span和div,HTML div和span
  7. adnroid string拼接_Android开发中string.xml文件中字符串的拼接
  8. Python全栈开发:web框架们
  9. 红米Redmi品牌独立首战告捷:半月多出货超100万
  10. C#接口的作用(经典)
  11. 如何打造139团队(不同层次人员的选择与培养,大型研发团队,大型敏捷开发团队)...
  12. python用pandas读取数据时出现错误_Python Pandas错误标记数据
  13. Java 并发:volatile 关键字解析
  14. C语言--------学生管理系统(源代码)
  15. windows驱动开发技术详解 VC6与DDK搭配使用的设置
  16. PDF转换成word转换器绿色版
  17. 微信小程序-找地儿住-官方文档
  18. 【MySQL】物化视图
  19. badboy安装及使用
  20. 如何建立高质量团队-《克服团队协作的五种障碍》笔记与心得

热门文章

  1. 双硬盘双系统win10+manjaro-kde搭建
  2. rails kaminari text modify
  3. EXCEL常见数据处理操作(一)
  4. 百度竞价账户能否多少词?
  5. 百度云,华为云,腾讯云,阿里云测评
  6. 从零开始 CMake 学习笔记 (G)compile-flags
  7. 11、C++各大有名库的介绍——综合
  8. Openlayers地图背景透明度设置
  9. 即时通讯系统集成开发
  10. GD32W515实现NES模拟器