下载好题目后,发现后缀名为:.pyc
所以使用python这些反编译工具:https://tool.lu/pyc/
利用这个网站反编译一下就可以得到Python的源代码

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
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) % 128code += numfor 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']

因为看起来有点乱。而且我用的是Python3的原因。所以手工调节一下

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
print ('Welcome to Re World!')
print ('Your input1 is your flag~')
input1 = input()
l = len(input1)for i in range(l):num = ((input1[i] + i) % 128 + 128) % 128code += numfor i in range(l - 1):code[i] = code[i] ^ code[i + 1]print (code)  # 输出code的值,然后我需要用这个code的值来求解flag
code = [ '\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']

这题需要反过来推,所以我们从下往上看。
第一步: 首先是异或的部分

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

这里我们需要了解一下异或的特性,即当两个相等的数进行异或的时候则会变成0.比如:7 ^ 7 = 0 。假设

code = [ A, B, C, D, E ]

则经过异或加工后为:

code = [ A^B, B^C, C^D, D^E, E ]

所以如果想要变成原来的code,则需要和原来的值进行异或,并且是从后往前推:

code = [ A^B^B, B^C^C, C^D^D, D^E^E, E ]
等价于
code = [ A, B, C, D, E ]

具体的写法是(Python3代码):

for x in range(len(code)-2,-1,-1):   # 从后往前遍历,并且倒是第一个不需要异或操作code[x] = chr(ord(code[x]) ^ ord(code[x+1]))

第二步: 这里再把+好变成-号就可以了

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

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

再把后面的多余的部分化简一下(也可以不化简)

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

所以最终获取flag的脚本(Python3代码):

code = [ '\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']flag = ""
for x in range(len(code)-2,-1,-1):   # 从后往前遍历,并且倒是第一个不需要异或操作code[x] = chr(ord(code[x]) ^ ord(code[x+1]))for i in range(0,len(code)):num = ((ord(code[i]) - i) + 128) % 128flag = flag + chr(num)
print(flag) # GWHT{Just_Re_1s_Ha66y!}


再把花括号前面的替换一下就是答案了:flag{Just_Re_1s_Ha66y!}

BUUCTF 逆向工程(reverse)之[GWCTF 2019]pyre相关推荐

  1. BUUCTF Reverse/[GWCTF 2019]pyre

    BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...

  2. [BUUCTF]REVERSE——[GWCTF 2019]pyre

    [GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...

  3. [GWCTF 2019]pyre.pyc [CISCN2018]2ex

    文章目录 [GWCTF 2019]pyre.pyc 反编译 脚本 [CISCN2018]2ex 查看txt 分析 [GWCTF 2019]pyre.pyc 反编译 uncompyle6 pyre.py ...

  4. buu Reverse学习记录(19) [GWCTF 2019]pyre

    题目链接:https://buuoj.cn/challenges#[GWCTF%202019]pyre 题目是个.pyc文件 现在python中安装 uncompyle 库 运行命令 uncompyl ...

  5. [BUUCTF]REVERSE解题记录 [GWCTF 2019]pyre

    1.首先这是一个python的项目,用从大佬那学习到的python反编译 - 在线工具打开 print 'Welcome to Re World!' print 'Your input1 is you ...

  6. BUUCTF Reverse [GWCTF 2019]pyre WriteUp

    pyre-WP 首先发现是pyc文件,使用在线工具进行反编译,得到源码 #!/usr/bin/env python # visit http://tool.lu/pyc/ for more infor ...

  7. buuctf GWCTF 2019 pyre

    下载题目发现是一个pyc文件,关于pyc的详细解释,我看到了这篇文章(6条消息) .pyc是什么?_loveliuzz的博客-CSDN博客_.pyc pyc文件是PyCodeObject的一种持久化保 ...

  8. GWCTF 2019 pyre YuSec

    pyre pyc文件,直接在线反编译得到 print 'Welcome to Re World!' print 'Your input1 is your flag~' l = len(input1) ...

  9. [GWCTF 2019]pyre 1

    py文件,随便在网上搜个反编译器,看看源码 看下就是很简单的俩轮加密,反着写过去就行了. 贴上别人的脚本- print('Welcome to Re World!') print('Your inpu ...

最新文章

  1. phalcon php 5.4,如何在php上安装phalcon
  2. VS2010去掉每次全部编译
  3. python如何绘制两点间连线_如何利用Python的pyecharts绘制3d柱形图?
  4. TCP/IP协议是什么
  5. 如何轻松学习Python数据分析?
  6. onvif发送订阅规则
  7. java中的列表栈链表_Java数据结构(栈,队列,双链表)
  8. (3)zynq FPGA AXI4_Stream总线介绍
  9. idea取消vim模式
  10. Fortran入门教程(八)——子例程及函数
  11. CAD绘制固定矩形批注(网页版)
  12. iptables四表五链及基本使用
  13. tcp 握手失败_什么是三次握手,握手为何要进行三次,如果握手失败会有什么后果...
  14. OPENWRT 修改串口(ttyS*)笔记
  15. Hive 的SQL基本操作
  16. 【android 应用】Android(安卓)APP(应用)如何推广?整理
  17. 避免让WPF资源字典变得杂乱臃肿
  18. 【软件设计】如何画时序图
  19. UserGuide-i3wm默认绑定简明说明
  20. 多谢您―skycc群发软件

热门文章

  1. 海为plc c语言,海为PLC
  2. 机器学习分类算法统一指标
  3. 编译内核报错——Failed to generate BTF for vmlinux
  4. html5与交互融媒体内容设计,广东省“HTML5交互融媒体内容设计与制作”赛项在我院顺利举行...
  5. 在逸管家共享经济时代我们应该分享什么?
  6. 大数据应用之【ClickHouse】
  7. 工厂模式下的动态Mybatis-Plus
  8. 利用matplotlib统计电影时长分布
  9. 精准医学:粪便DNA甲基化标志物在大肠癌分期及其先兆诊断中的应用|早期筛查
  10. 盘点了109个金融行业活动案例,找到了最常用的10种