美文网首页
世安杯-get_flag

世安杯-get_flag

作者: 2mpossible | 来源:发表于2017-10-18 12:46 被阅读0次

    一开始不知道怎么调试,拿到代码很乱,后面慢慢的调,终于找到关键代码

    关键就是那个比较,其中eax的计算根据输入计算得到的,exc在内存中提出来的
    然后我们来看地址0xeb5018是什么字符,在00EB1222那里右键数据窗口中跟随==>地址常量

    可以看到要比较的十六进制数,然后我们再来看具体的算法操第一步的操作:

    可以知道大概就是(ecx*2-6)^ecx 而ecx放的就是输入的字符串的一个字节

    第二步:

    这里就是之前的数-2edx,而edx是从0-15的,最后理解了大概的逻辑,写脚本:

    import string
    dic = string.printable
    dict=[0xB9,0x3A,0xA9,0xD8,0x15,0x8A,0xE7,0x42,0x69,0x90,0xCA,0xA3,0x4D,0xD8,0xD9,0xC9]
    flag=""
    
    for i in range(16):
        for j in dic:
            if( ( ( (ord(j)*2-6) ^ ord(j) ) - 2*i )==dict[i]):
                flag+=j
                break
            
    print flag
    

    相关文章

      网友评论

          本文标题:世安杯-get_flag

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