开启靶场,下载附件,解压后得到:

双击exe文件,出现弹窗:

问的是异或,写个python文件来计算结果:

# 获取用户输入的两个整数
num1 = int(input("Enter the first number: "))
num2 = int(input("Enter the second number: "))

# 计算异或结果
xor_result = num1 ^ num2

# 打印结果
print(f"The result of {num1} XOR {num2} is: {xor_result}")

得到结果970


输入970后继续问问题:

继续写个python文件来计算结果:

# 已知的数
known_xor_result = 369
known_number = 258

# 计算未知数 x
unknown_number = known_xor_result ^ known_number

# 打印结果
print(f"The unknown number x that satisfies 258 XOR x = 369 is: {unknown_number}")

得到结果115


输入115,继续问问题:

第三问问的是字符a和字符z的ascii码值的异或结果

还是继续编写python脚本

# 字符'a'和'z'
char_a = 'a'
char_z = 'z'

# 将字符转换为其ASCII码值
ascii_a = ord(char_a)
ascii_z = ord(char_z)

# 计算ASCII码值的XOR结果
xor_result_ascii = ascii_a ^ ascii_z

# 将XOR结果转换回字符
xor_result_char = chr(xor_result_ascii)

# 输出结果
print(f"The result of '{char_a}' XOR '{char_z}' is: {xor_result_char} (ASCII value: {xor_result_ascii})")

得到结果27


输入27,得到flag:

NSSCTF{k0nw_of_r3}


但这题是逆向类别的,可以用逆向的思路来做

python主流的打包方式是使用pyinstaller,针对这种情况可以使用pyinstaller Extractor进行解包

先去安装uncompyle6

pip install uncompyle6


去github上下载https://github.com/one066/Exe-decompiling

新建bucket文件夹,将exe文件丢进bucket文件夹中


运行main.py:


发现bucket目录下多了一个文件夹和一个文件:


找到re1文件:

修改文件后缀为pyc,再用记事本打开,成功找到flag:


正常来说的思路是需要反编译成py文件的:

在Python3.7及以上版本的编译后二进制文件中,头部除了四字节Magic Number,还有四个字节的空位和八个字节的时间戳+大小信息,后者对文件反编译没有影响,全部填充0即可

Python3.3 - Python3.7(包含3.3)版本中,只需要Magic Number和八位时间戳+大小信息

Python3.3 以下的版本中,只有Magic Number和四位时间戳


添加33 0D 0D 0A 00 00 00 00 00 00 00 00 ,保存一下:


去github上下载:

https://github.com/zrax/pycdc


去下载CMake:

https://cmake.org/download/


将解压的pycdc-master文件夹拖到VScode中打开:


ctrl shift p执行CMake:Build,要是找不到就直接输入CMake:Build


生成两个exe文件:


将re1.pyc文件复制粘贴到这两个exe文件的同级目录下:


运行以下命令:

pycdc.exe re1.pyc > re1.py

这样才是成功反编译出py文件,并且找到flag

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐