zoukankan      html  css  js  c++  java
  • Buuoj rot

    线索

    题目给了密文:

    83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112

    尝试rot解码

    1. 最开始尝试rot5,得到的结果没什么意义。后来想到rot13是字母移位13,何不试一下对密文的数字加减13看看结果。减13转ASCII发现前4个数字对应FLAG因此代码如下:  
    c = "83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112"
    c = c.split(" ")
    
    flag = ""
    for i in c:
        i = int(i) - 13
        flag += chr(i)
    print(flag)
    
    1. 跑出来结果如下:

    FLAG IS flag{www_shiyanbar_com_is_very_good_????}
    MD5:38e4c352809e150186920aac37190cbc

    1. 原以为这就是最终的flag了,提交发现不对。意识到尾部的四个?是需要通过现有字符串已知部分和最终的MD5值求解的~

    通过md5值爆破字符串中4位未知字符

    代码如下,只会这个笨方法,跑出结果大概一两分钟。应该有更优的方法。。。

    import hashlib
    
    head = "flag{www_shiyanbar_com_is_very_good_"
    tail = "}"
    md5 = "38e4c352809e150186920aac37190cbc"
    
    for c1 in range(33,127):
        for c2 in range(33,127):
            for c3 in range(33,127):
                for c4 in range(33,127):
                    st = head + chr(c1) + chr(c2) + chr(c3) + chr(c4) + tail
                    a = hashlib.md5()
                    a.update(st.encode())
                    if a.hexdigest() == md5:
                        print(st)
    

    flag{www_shiyanbar_com_is_very_good_@8Mu}

  • 相关阅读:
    js原生碰撞检测
    基于栈的指令集与基于寄存器的指令集
    偏向锁,轻量级锁
    java 内存模型
    JVM即时编译器
    动态分配
    静态分配
    栈帧笔记
    类加载器
    类加载过程
  • 原文地址:https://www.cnblogs.com/vict0r/p/13441939.html
Copyright © 2011-2022 走看看