2024青少年ctf --easyMD5

例题

先上传了两个相同MD5值的pdf文件--提示文件要不同

后上传两个不同类型md5(md5(php,32) = e1bfd762321e409cee4ac0b6e841963c
md5(php,16) = 321e409cee4ac0b6)但是解密后都为php的pdf文件,出现提示:MD5碰撞

搜索得知MD5碰撞是指两个不同的输入通过MD5散列函数产生相同的输出散列值。(不可逆)

即两个不同的数据却产生了相同的 MD5 哈希值既:4.pdf != 5.pdf   but  md5(4.pdf)=MD5(5.pdf)

使用工具fastcoll!!!

方法:打开cmd,在fastcoll目录下输入命令(前提:新创建一个pdf文件3.pdf,文件内容:php)

fastcoll_v1.0.0.5.exe -p D:\桌面\3.pdf -o D:\桌面\4.pdf D:\桌面\5.pdf(p+源文件,o+新创建的两个文件)

注意:添加文件的生成地址

完成命令后得到文件上传至环境

用BP抓包(比较快)使用repeate模块得到flag

检验

使用 certutil 命令查看一下md5

certutil -hashfile D:\桌面\4.pdf MD5

知道了两个pdf文件MD5值相同

关于MD5弱比较与强碰撞

可以通过python来爆破md5中的几位,下面给出一份示例python代码

1.  import hashlib
2.  for i in range(0,9999999999999999):
3.  md5=hashlib.md5(str(i).encode("utf-8")).hexdigest()
4.  if md5[0:5]=="66666": #md5后前五位是66666
5.  print(i)
6.  print("no result")

该脚本实现了纯数字通过MD5加密后相应位数是特定字符的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值