测试文件:https://adworld.xctf.org.cn/media/task/attachments/69c8f29912ae4f679d92a6cd36c33196.pyc
这里需要用到一个pyc文件反编译的工具,可以使用在线https://tool.lu/pyc/,也可以使用命令下载
pip install uncompyle
1.准备
pyc文件就是 py程序编译后得到的字节码文件 (py->pyc)
2.pyc文件逆向
在命令窗口执行
uncompyle6 test.pyc > test.py
打开得到的test.py
# uncompyle6 version 3.4.0# Python bytecode 2.7 (62211)# Decompiled from: Python 2.7.16 (default,Apr 6 2019,01:42:57) # [GCC 8.3.0]# Embedded file name: 1.py# Compiled at: 2017-06-03 10:20:43import base64def encode(message): s = ‘‘ for i in message: x = ord(i) ^ 32 x = x + 16 s += chr(x) return base64.b64encode(s)correct = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt‘flag = ‘‘print ‘input flag:‘flag = raw_input()if encode(flag) == correct: print ‘correct‘else: print ‘wrong‘# okay decompiling test.pyc
2.1 代码分析
通过查看这段Python2代码,我们知道flag进行encode函数中的 *** 作,得到‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt’。
因此,我们只要反过来执行,就能够得到flag,写出代码
import base64def decode(message): s = ‘‘ imessage = base64.b64decode(message) for i in imessage: x = ord(i) - 16 x = x ^ 32 s += chr(x) return scorrect = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt‘flag = decode(correct)print(flag)
3.get flag!
总结nctf{d3c0mpil1n9_PyC}
以上是内存溢出为你收集整理的攻防世界--python-trade全部内容,希望文章能够帮你解决攻防世界--python-trade所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)