首页
社区
课程
招聘
[原创][HUBUCTF 2022 新生赛]ezPython
发表于: 2023-9-18 20:08 5639

[原创][HUBUCTF 2022 新生赛]ezPython

2023-9-18 20:08
5639

附件链接:https://wwvc.lanzouj.com/iIqq218z5x0d
图片描述
给了一个pyc文件
利用命令将pyc转换为py文件

打开py文件

这段代码是Python中的字符串和编码转换操作。
首先,password是一个字符串,使用encode()方法将其转换为字节类型(bytes),采用UTF-8编码方式进行转换。接下来,tmp使用bytes_to_long函数将字节序列转换为一个长整型数值。
然后,tmp的值通过先使用Base58编码,再使用Base64编码的方式进行转换。base58.b58encode()和base64.b64encode()分别是对应的编码函数。
最后,使用decode()方法将编码后的结果转换为字符串类型。使加密后的值也就是ans等于M0hBajFITHVLcWV6R1BOcEM5MTR0R0J3eGZVODV6MTJjZUhGZFNHQw==
整个过程就是将密码转换为经过Base58编码和Base64编码的字符串,以ans变量保存结果。

解码过程:
先将ans进行base64解密,再进行base58解密
图片描述

图片描述

再用python跑出bytes字节类型转换为长整型数值

password为HUBUCTF@1405

根据题目描述,flag为md5(password),一般取md5加密都是32位小写

故flag:

uncompyle6 ezPython.pyc > ezPython.py
uncompyle6 ezPython.pyc > ezPython.py
# uncompyle6 version 3.9.0
# Python bytecode version base 3.7.0 (3394)
# Decompiled from: Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: .\ezPython.py
# Compiled at: 2022-09-03 23:53:44
# Size of source mod 2**32: 444 bytes
from Crypto.Util.number import *
import base64, base58
password = open('password.txt', 'r').read()            
tmp = bytes_to_long(password.encode('utf-8'))             
ans = base64.b64encode(base58.b58encode(str(tmp))).decode()
print("I've forgot my password,could you please help me find the password?")
if ans == 'M0hBajFITHVLcWV6R1BOcEM5MTR0R0J3eGZVODV6MTJjZUhGZFNHQw==':
    print('You get the password!')
else:
    print('Wrong! try again')
# okay decompiling ezPython.pyc
# uncompyle6 version 3.9.0
# Python bytecode version base 3.7.0 (3394)
# Decompiled from: Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: .\ezPython.py
# Compiled at: 2022-09-03 23:53:44
# Size of source mod 2**32: 444 bytes
from Crypto.Util.number import *
import base64, base58
password = open('password.txt', 'r').read()            
tmp = bytes_to_long(password.encode('utf-8'))             
ans = base64.b64encode(base58.b58encode(str(tmp))).decode()
print("I've forgot my password,could you please help me find the password?")
if ans == 'M0hBajFITHVLcWV6R1BOcEM5MTR0R0J3eGZVODV6MTJjZUhGZFNHQw==':

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//