美文网首页网络安全
53.实验吧——try them all

53.实验吧——try them all

作者: 扶桑啊啊 | 来源:发表于2018-09-12 10:53 被阅读0次

    题目:http://www.shiyanbar.com/ctf/1981

    image.png

    看题干的意思是密码是经过加盐后,用md5加密的,首先还原加密过程

    from hashlib import md5
    def salted_password(pwd):
        plaintext = "%s%s" % (pwd, '5948')
        md5_obj = md5(plaintext)
        return md5_obj.hexdigest()
    print(salted_password('123'))
    

    参考解密writeup:http://www.shiyanbar.com/ctf/writeup/3968
    因为md5加密很难暴力破解,看了writeup的意思是猜测它的密码是6位数的小写字母加密,然后使用小写字母表进行笛卡尔乘积,得到所有有可能出现的组合,将这些组合加盐后全部进行md5加密,将加密后的结果比对原题目中给出的密码,从而找到加密明文。
    按照上述思路,写出解密代码:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import itertools as its
    import hashlib
    def unsalted_password(str_letter):
            r = its.product(str_letter, repeat=6)
            for j in r:
                    plaintext = "".join(j) #连接成字符串
                    plaintext = "%s%s" % (plaintext, '5948')  #把盐加到明文的后面 每次生成的最终明文
                    md5_obj = hashlib.md5(plaintext)
                    text = md5_obj.hexdigest()   #将所有的明文都进行md5加密,与最后的密码进行比对
                    if text=='81bdf501ef206ae7d3b92070196f7e98':
                            print plaintext
                            break                               
    str_letter="abcdefghijklmnopqrstuvwxyz"     
    unsalted_password(str_letter)
    

    但是太慢了,因为我看了writeup知道flag是sniper,如果把答案代入,把str_letter设为“sniper”,是可以很快跑出来的,所以猜测可能是我电脑性能低的原因,所有小写字母都来一遍太占内存,经过很长时间才得到flag

    image.png

    相关文章

      网友评论

        本文标题:53.实验吧——try them all

        本文链接:https://www.haomeiwen.com/subject/vsumgftx.html