[GWCTF 2019]pyre 题解

举报
御麟 发表于 2023/04/25 22:59:12 2023/04/25
【摘要】 ​ I came,I saw,I conquered.1.使用在线工具获得源代码这是一个pyc文件,需要反编译获得源代码(py文件可以直接用记事本打开获取源代码,pyc不可以)使用在线工具​编辑 获取源代码#!/usr/bin/env python# visit https://tool.lu/pyc/ for more information# Version: Python 2.7pri...

 I came,I saw,I conquered.

1.使用在线工具获得源代码

这是一个pyc文件,需要反编译获得源代码(py文件可以直接用记事本打开获取源代码,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 = [
    '%1f',
    '%12',
    '%1d',
    '(',
    '0',
    '4',
    '%01',
    '%06',
    '%14',
    '4',
    ',',
    '%1b',
    'U',
    '?',
    'o',
    '6',
    '*',
    ':',
    '%01',
    'D',
    ';',
    '%',
    '%13']

按照这个代码逆向还原回去,得到flag

2.分析与wp

首先要了解异或运算,两次异或等于没有异或

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

还原这一步

for i in range(l):
    num = ((input1[i] + i) % 128 + 128) % 128
    code += num

再还原这一步

wp

code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o',
        '6', '*', ':', '\x01', 'D', ';', '%', '\x13']
flag=""
f1 = len(code)
for i in range(f1 - 2, -1, -1):
  code[i] = chr(ord(code[i]) ^ ord(code[i + 1]))

for j in range(f1):
  flag+=chr((ord(code[j]) - j) % 128)
print(flag)

GWHT{Just_Re_1s_Ha66y!}

flag{Just_Re_1s_Ha66y!}



【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。