攻防世界--python-trade
2024-10-07 13:23:12
测试文件: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}
最新文章
- #define DELAY_ONE_MICROSECOND (-10) 时间是负数的原因
- UItableVIew初探
- 即时通信系统中如何实现:全局系统通知,并与Web后台集成?【低调赠送:QQ高仿版GGTalk 5.1 最新源码】
- linux系统命令:yum和apt-get
- How to increase TX Power Signal Strength of WiFi
- 《android 导入第三方源码jar包遇到的坑》
- .pch头文件的添加
- HTTP Status 500 - An exception occurred processing at line 35
- java intellij 写控制台程序 窗口程序
- ORACLE 11G用于有效期
- IDF实验室-简单编程-特殊的日子 writeup
- leetcode Contains Duplicate II python
- 枚举算法总结 coming~^.*
- &;&;运算符,三木运算符与React的条件渲染
- 一起来学Go --- (go的简介以及环境的安装)
- 《java入门第一季》之面向对象(重头戏继承来了)
- Linux 桌面玩家指南:15. 深度学习可以这样玩
- Python——字符串、文件操作,英文词频统计预处理
- ceil()函数的应用-hdu1065
- 第二次项目冲刺(Beta版本)