zoukankan      html  css  js  c++  java
  • 羊城杯wp babyre

    肝了好久,没爆破出来,就很难受,就差这题没写了,其他三题感觉挺简单的,这题其实也不是很难,我感觉是在考算法。

    在输入之前有个smc的函数,先动调,attach上去,ida打开那个关键函数。

     代码逻辑还是很清晰的,坑的地方就是在最后一个异或那里,题目已经给出了最后一个字符是0xC4了,这样我以为可以倒着求,发现写完算法,缺了十几位,

    我反复的验证,发现有多解,但是当时凌晨2点多了,我脑子也坏了,没想到是深搜,当时在ipad上演算了一下,发现有多解,相当于分叉,今天看了表哥的,wp

    才想起来,就是一个分叉路的图,可以用深搜去解决,下次记得了,这波放个表哥的wp

    from Crypto.Cipher import AES
    from hashlib import md5
    input=[0 for i in range(32)]
    input[31]=0xC4
    res=[0xBD, 0xAD, 0xB4, 0x84, 0x10, 0x63, 0xB3, 0xE1, 0xC6, 0x84, 0x2D, 0x6F, 0xBA, 0x88, 0x74, 0xC4, 0x90, 0x32, 0xEA, 0x2E, 0xC6, 0x28, 0x65, 0x70, 0xC9, 0x75, 0x78, 0xA0, 0x0B, 0x9F, 0xA6, 0x00, 0x30, 0xE4, 0xD2, 0xC3, 0xEF, 0x75, 0xED, 0xA8, 0xE1, 0xA1, 0x73, 0x81, 0xE2, 0xE9, 0xAB, 0xC8, 0xBF, 0xCA, 0x52, 0xE8, 0xED, 0x6B, 0xA2, 0x39, 0x86, 0x21, 0xD0, 0xF6, 0x50, 0x3E, 0xF3]
    res=res[:32]
    ans=[]
    def sou(input,deep):
        if deep==0:
            x=input.copy()
            ans.append(x)
            return
        else:
            for i in range(256):
                if((2*(i^0x13)+7)^(i%9+input[deep]+2))&0xff==res[deep-1]:
                    input[deep-1]=i
                    sou(input,deep-1)
    sou(input,31)
    for tmp in ans:
        for i in range(31, -1, -1):
            for j in range(int(i/4)):
                tmp[i] ^= tmp[j]
        aes = AES.new(b"th1s1sth3n1c3k3y", mode=AES.MODE_ECB)
        res = aes.decrypt(bytes(tmp))
        if res.startswith(b"GWHT{"):
            print(res)
            print(md5(res[5:-1]).hexdigest())
  • 相关阅读:
    帧同步与状态同步
    撸个服务端出来系列(五)
    撸个服务端出来系列(四)
    撸个服务端出来系列(三)
    撸个服务端出来系列(二)
    新博客手机适配的问题
    撸个服务端出来系列(一)
    高性能事件分发器,lua 版
    cocos2dx lua UI栈
    cocos2dx3.x+cocostudio多屏幕分辨率适配解决方案(干货)
  • 原文地址:https://www.cnblogs.com/YenKoc/p/13667761.html
Copyright © 2011-2022 走看看