攻防世界--python-trade

攻防世界--python-trade,第1张

概述测试文件:https://adworld.xctf.org.cn/media/task/attachments/69c8f29912ae4f679d92a6cd36c33196.pyc   这里需要用到一个pyc文件反编译的工具,可以使用在线https://tool.lu/pyc/,也可以使用命令下载 pip install uncompyle   1.准备 pyc文件就是 py程序编译后得到的字

测试文件: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+AaXNtflag = ‘‘print input flag:flag = raw_input()if encode(flag) == correct:    print correctelse:    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+AaXNtflag = decode(correct)print(flag)

 

3.get flag!

nctf{d3c0mpil1n9_PyC}

总结

以上是内存溢出为你收集整理的攻防世界--python-trade全部内容,希望文章能够帮你解决攻防世界--python-trade所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1191631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存