攻防世界-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\n", 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)
posted @ 2020-04-07 21:54  刚刚吃饭来着呢  阅读(178)  评论(0编辑  收藏  举报