zoukankan      html  css  js  c++  java
  • MD5截断比较验证

    最近在打De1CTF时在Web项目中碰到了两次MD5截断比较验证的题目,在做题时为了方便顺手写了一个小脚本来爆破Code,下面就简单分享一下思路

    以De1CTF线上赛Web3为例,在De1CTF中,我遇到的MD5截断比较验证是这样的:

    这个验证码提示的意思是“将问号(即为Code)进行md5加密之后截取前5位===9331c”

    那么在理论上存在的可能性有16^5种,页面每次刷新之后md5都会更新一次,但是在现实中,md5前五位相同是多解

    那么我们的思路就可以梳理为:创建一个彩虹表进行比对,暴力猜解Code

    from multiprocessing.dummy import Pool as tp
    import hashlib
    
    knownMd5 = '9331c'      #已知的md5明文

    def md5(text): return hashlib.md5(str(text).encode('utf-8')).hexdigest() def findCode(code): key = code.split(':') start = int(key[0]) end = int(key[1]) for code in range(start, end): if md5(code)[0:5] == knownMd5: print code break list=[] for i in range(3): #这里的range(number)指爆破出多少结果停止 list.append(str(10000000*i) + ':' + str(10000000*(i+1))) pool = tp() #使用多线程加快爆破速度 pool.map(findCode, list) pool.close() pool.join()

    运行结果如下:

    以上输出的3个Code都是可以使用的,针对不同情况可以选择爆破出不同数量的结果

  • 相关阅读:
    redis 持久化
    Hyper-V虚拟机Redhat添加网卡找不到网卡配置文件解决方法
    java 查看ssl log
    iptables配置https防火墙策略
    java 一致性哈希源码 转
    mysql主备配置方法
    hibernate 缓存配置
    Hibernate中文乱码
    HttpPost 中文编码问题 EntityBuilder
    apache 配置tomcat代理
  • 原文地址:https://www.cnblogs.com/yesec/p/11297568.html
Copyright © 2011-2022 走看看