unctf2022 md5-1 (python实现MD5碰撞)

1 篇文章 0 订阅
1 篇文章 0 订阅

unctf2022 md5-1 (python实现MD5碰撞)

首先下载并解压文件
在这里插入图片描述
这是txt文件内容
在这里插入图片描述

用pycharm 打开.py文件
这里是py文件源码

from hashlib import md5

flag='UNCTF{%s}'%md5('x'.encode()).hexdigest() 
# x不是一个字符是n个字符

for i in flag:
    with open('out.txt','a')as file:
        file.write(md5(i.encode()).hexdigest()+'\n')

其中的flag就是是我们要的东西。但是看最后三行,flag中的每一个字母都被MD5加密让后写入了文件中。所以直接对文件中的md5进行解密就可以得到flag。
注意: 源码中的的文件写入采用的是追加的方式,如果不小心运行或者单击的.py文件都会吧文件弄乱,(即把x字母的MD5密码的每一个字符再MD5加密加到文件后面)

由于密码太多,一条条解密太麻烦,于是我写了个程序

from hashlib import md5

file=open("out.txt",'r') #out.txt是MD5密码放的位置
#列出flag中可能会出现的字符
list=['1','2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','{','}','_']
while True:
    line=file.readline()
    passw=line.strip()
    for ans in list:
        if md5(ans.encode('utf-8')).hexdigest()==passw:
            print(ans,end='')
            break
            
    if not line:
        break

优化建议
判断是否碰撞成功,如果失败输出”失败“进行提示

此程序采用MD5碰撞的方式进行爆破,运行后就可以得到flag

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值