XCTF_reverse python-trade

  • 知识点
    1,对 .pyc 文件的了解;
    2,反编译 .pyc文件;

0x01

简介 .pyc文件:是python文件在 import 条件下,通过python 解释器解释(或者编译)后生成的字节码文件,可以理解为 python 源程序的一种存在方式,具有隐藏源码的安全性;

0x02

解题:下载题目的 .pyc 文件,首先安装一波 python 的 pyc文件反编译 模块:

pip install uncompyle
#命令行

安装好模块后直接 运用模块进行反编译:

uncompyle6 6.pyc > 6.py

得到 python 源码:

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'

代码分析:
对 输入的 flag 与 32 进行异或运算,再加 16 ,再 base64 加密,最后将结果保存到 s ,与 correct 字符串做比较;
因此,correct 相当于 encode() 函数加密后的结果,所以只要将 encode() 反转,即可得到flag;

import base64
message = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
s = base64.b64decode(message)
flag = ''

for i in s:
    flag += chr((i-16)^32)
print(flag)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46635165/article/details/109280245