buu reverse [GWCTF 2019]pyre

首先用python反编译 - 在线工具反编译pyc文件,得到以下代码

点击查看代码
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7

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']

然后写脚本

点击查看代码
l=23
code = ['\x1f',
    '\x12',
    '\x1d',
    '(',
    '0',
    '4',
    '\x01',
    '\x06',
    '\x14',
    '4',
    ',',
    '\x1b',
    'U',
    '?',
    'o',
    '6',
    '*',
    ':',
    '\x01',
    'D',
    ';',
    '%',
    '\x13']

for i in range(21, -1, -1):
    code[i] = chr(ord(code[i]) ^ ord(code[i + 1]))

for i in range(23):
    print(chr((ord(code[i])-i)%128),end="")

一开始在想128是干嘛用的,后来想起来,ascii码一共有128个,%128的目的是保证存在字符可以被输出

得到flag:GWHT{Just_Re_1s_Ha66y!}

posted @ 2022-08-05 17:16  畅容  阅读(49)  评论(0)    收藏  举报