加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

攻防世界--python-trade

发布时间:2020-12-20 10:51:33 所属栏目:Python 来源:网络整理
导读:测试文件: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:43
import base64

def 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 base64

def decode(message):
    s = ‘‘
    imessage = base64.b64decode(message)

    for i in imessage:
        x = ord(i) - 16
        x = x ^ 32
        s += chr(x)

    return s

correct = XlNkVmtUI1MgXWBZXCFeKY+AaXNt

flag = decode(correct)
print(flag)

?

3.get flag!

nctf{d3c0mpil1n9_PyC}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读