pyre

发布时间 2023-05-03 14:05:40作者: TFOREVERY

养成习惯,不管它是啥,都先查壳

可以看出这是一个.py的文件,所以要反编译成py的文件,这里用的是uncompyle6

安装如下:cmd命令下输入如下:pip install uncompyle6(回车)

使用如下:uncompyle6 (目标文件) > (转换成的文件的名字).py(这里注意,要在对应路径下使用,不然找不到文件)

得到对应的py文件,查看咯:

print 'Welcome to Re World!'
print 'Your input1 is your flag~'
l = len(input1)
for i in range(l):
    num = ((input1[i] + i) % 128 + 128) % 128
    code += num

for i in range(l - 1):
    code[i] = code[i] ^ code[i + 1]

print code
code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', 
 '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']

解读一下:

首先是让我们输入一个字符串,经过加密后,如果能和code的元素对应上,那么你输入的就是正确的flag

很明显(一堆错误,看的懂在讲啥就好,不懂其中的函数的话可以去查查看,挺简单的这道题的函数),需要我们来个暴力,来吧脚本:

int main(){
    char code[] = {'\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',',
    '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13'};
    for(int i = strlen(code)-1; i >= 0; i--){
        code[i-1] = code[i] ^ code[i-1];
    }
    string flag = "";
    for (int i = 0; i < strlen(code); i++) {
        for (int j = 32; j <= 126; j++) {
            if(((j + i)%128 + 128)%128 == code[i]){
                flag += char(j);break;
            }
        }
    }
    cout << flag << endl;
    return 0;
}

得到flag{Just_Re_1s_Ha66y!}收工。