zoukankan      html  css  js  c++  java
  • 攻防世界-reverse-4.5.6

    第四题logmein13

    ida识别的伪代码

    逆向解题py代码

    v8= ":"AL_RT^L*.?+6/46"
    v7 = 'harambe'//X86结构是小端模式,故需要倒过来
    v6 = 7
    flag =''
    
    for i in range(0,len(v8)):
    	flag += chr(ord(v8[i])^ord(v7[i%v6]))
    print flag
    

    注: (*((_BYTE *)&v7 + i % v6)此处。们常用的X86结构是小端模式!!!!也是为何v7直接转换为字符是ebmarah,而在上面的py代码中v7 = 'harambe'。

    C语言代码

    #include <stdio.h>
    int main(int argc, char* argv[]) {
        unsigned int i;
        char v8[18] = ":"AL_RT^L*.?+6/46";
        __int64_t v7 = 28537194573619560;
        int v6 = 7;
        char s[18] = "";
        for (i = 0; i < strlen(v8); ++i) {
            s[i] = (char)(*((char*)&v7 + i % v6)^v8[i]);
        }
        printf("%s
    ", s);
        system("PAUSE");
        return 0;
    }
    
    

    第五题 insanity

    太简单了,直接shift+F12

    第六题

    一道python题
    使用该网站https://tool.lu/pyc/对pyc文件解密

    import base64
    def encode(message):
        s = ''
        for i in message:
            x = ord(i) ^ 32 //ord以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,
            x = x + 16
            s += chr(x)//chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
    
        return base64.b64encode(s)
    
    
    correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
    flag = ''
    print 'Input flag:'
    flag = raw_input()
    if encode(flag) == correct:
        print 'correct'
    else:
        print 'wrong'
    
    

    解题方法

    import base64
    message = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
    last_flag = base64.b64decode(message)
    print(last_flag)
    s=''
    for i in last_flag:
        s += chr((ord(i) - 16)^32)
    print(s)
    
  • 相关阅读:
    mongodb分片
    mongodb副本集搭建
    mongodb数据导入导出
    mongodb安装、配置
    redis副本集
    redis安装,第一天
    redis常用命令
    mac中安装 RabbitMQ
    Vue常用模块
    nodejs,koa2常用模块
  • 原文地址:https://www.cnblogs.com/banpingcu/p/12656417.html
Copyright © 2011-2022 走看看