BUUCTF Reverse/[GWCTF 2019]pyre
下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码
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']
根据代码写出脚本
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char code[] = {'\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13','\0'};
int L = strlen(code);
int i ;
for(i = L - 1; i > 0; i --)
{
code[i - 1] ^= code[i];
}
for(i = 0; i < L; i++)
{
code[i] -= i;
if(code[i] < 0)
code[i] += 128;
code[i] %= 128;
}
printf("%s\n",code);
return 0;
}
运行得到flag