[SWPUCTF 2022 新生赛]py1的write up

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

双击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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法(冒泡,插入),希尔排序(插入升级),希尔排序和插入排序时间比较!

🎁个人主页:我们的五年 🔍系列专栏:排序算法 🎉欢迎大家点赞👍评论📝收藏⭐文章 一.冒泡排序: 时间复杂度:O(N^2)。 🏄‍♂️思路…

【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)

【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS & 软路由OpenWrt & Docker & Win10远程桌面) 1、原硬件配置清单:2、改AIO后增加配置清单:3、虚拟化平台PVE:4、搭建的关键服务: 1…

Web高级开发实验:EL基本运算符与数据访问

一、实验目的 掌握EL的定义,即Expression Language,用于提高编程效率。学习和掌握在开发环境中创建Java文件,并在jsp文件中使用EL表达式去调用其中的方法与属性等。 二、实验所用方法 上机实操 三、实验步骤及截图 1、创建javaweb项目&a…

Springboot项目中常用注解

文章目录 Springboot相关注解EnableAspectJAutoProxy(exposeProxy true)内部实现机制 EnableTransactionManagementServletComponentScanMapperScan(basePackages {"com.xxx.mapper"})ComponentScan(basePackages{"*"})lombok Data注解Controller中的相关…

jvm虚拟机介绍

Java虚拟机(JVM)是Java语言的运行环境,它基于栈式架构,通过加载、验证、准备、解析、初始化等类加载过程,将Java类文件转换成平台无关的字节码,并在运行时动态地将其翻译成特定平台的机器码执行。 JVM的核心…

基于SSM农业信息管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,农业技术管理,种植户管理,农产品类型管理,农资订单管理,系统管理 种植户账号功能包括:系统首页,个人中心&a…

01C++书写hello world、注释、变量、常量

#include <iostream> using namespace std; int main()//main为一个程序的入口&#xff0c;每个程序都必须仅有一个 { cout<<"hello world"<<endl; } //#输出结果为 //单行注释的符号 /* 多行注释的符号 */ //变量创建的语法&#xff1a;数据类…

OpenAI GPT-o1实现方案记录与梳理

本篇文章用于记录从各处收集到的o1复现方案的推测以及介绍 目录 Journey Learning - 上海交通大学NYUMBZUAIGAIRCore IdeaKey QuestionsKey TechnologiesTrainingInference A Tutorial on LLM Reasoning: Relevant methods behind ChatGPT o1 - UCL汪军教授Core Idea先导自回归…

shodan2---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 实验一&#xff1a;search 存在CVE-2019-0708的网络设备 CVE - 2019 - 0708**漏洞&#xff1a;** 该漏洞存在于远程桌面…

offset Explorer连接云服务上的kafka连接不上

以上配置后报连接错误时&#xff0c;可能是因为kafka的server.properties配置文件没配置好&#xff1a; 加上面两条配置&#xff0c;再次测试连接&#xff0c;成功 listeners和advertised.listeners

C++的相关习题(2)

初阶模板 下面有关C中为什么用模板类的原因&#xff0c;描述错误的是? ( &#xff09; A.可用来创建动态增长和减小的数据结构 B.它是类型无关的&#xff0c;因此具有很高的可复用性 C.它运行时检查数据类型&#xff0c;保证了类型安全 D.它是平台无关的&#xff0c;可移植…

Vue.js 组件开发教程:从基础到进阶

Vue.js 组件开发教程:从基础到进阶 引言 在现代前端开发中,Vue.js 作为一款流行的 JavaScript 框架,以其简单易用和灵活性赢得了开发者的青睐。Vue 组件是 Vue.js 的核心概念之一,理解组件的开发和使用对构建复杂的用户界面至关重要。本篇文章将详细介绍 Vue.js 组件的开…

NFS练习

一、实验目的 1、开放/nfs/shared目录&#xff0c;供所有用户查询资料 2、开放/nfs/upload目录&#xff0c;为192.168.xxx.0/24网段主机可以上传目录&#xff0c; 并将所有用户及所属的组映射为nfs-upload,其UID和GID均为210 3、将/home/tom目录仅共享给192.168.xxx.xxx这台…

MySQL全文索引检索中文

MySQL全文索引检索中文 5.7.6版本不支持中文检索&#xff0c;需要手动修改配置 ft_min_word_len 1 &#xff0c;因为默认配置 4 SHOW VARIABLES LIKE ft%; show VARIABLES like ngram_token_size;配置 修改 MySQL 配置文件 vim /etc/my.cnf在配置的 [mysqld] 下面添加**ft_…

C++——string的模拟实现(上)

目录 引言 成员变量 1.基本框架 成员函数 1.构造函数和析构函数 2.拷贝构造函数 3.容量操作函数 3.1 有效长度和容量大小 3.2 容量操作 3.3 访问操作 (1)operator[]函数 (2)iterator迭代器 3.4 修改操作 (1)push_back()和append() (2)operator函数 引言 在 C—…

【C++单调栈 贡献法】907. 子数组的最小值之和|1975

本文涉及的基础知识点 C单调栈 LeetCode907. 子数组的最小值之和 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 109 7 。 示例 1&#x…

RabbitMQ是一个开源的消息代理和队列服务器

RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;它基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;协议实现&#xff0c;同时也支持其他消息协议如STOMP、MQTT等。作为一个可靠的消息传递服务&#xff0c;RabbitMQ在分…

了解光耦合器输入输出关系---腾恩科技

光耦合器&#xff0c;也称为光隔离器&#xff0c;是电子电路中必不可少的元件&#xff0c;主要用于在隔离部分之间传输信号&#xff0c;同时防止电噪声或高压影响敏感元件。其独特的设计使它们能够在没有直接电接触的情况下&#xff0c;弥合不同电压域之间的差距。在本文中&…

小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(5)定时器和计数器

越努力&#xff0c;越幸运&#xff01; 兄弟们&#xff0c;要搬家到上海滴水湖了 职业生涯又迎来一次比较重要的变动 郑州->上海->上海临港 哈哈哈 flechazo 小柴冲刺软考中级嵌入式系统设计师系列总目录 一、硬件定时器 从硬件角度来看&#xff0c;定时器&#xf…

学习--图像信噪比

目录 图像信噪比 图像信噪比 图像信噪比的计算公式&#xff1a; 其中&#xff0c; M M M和 N N N分别表示图像长度和宽度上的像素数。 f ( i , j ) f(i,j) f(i,j) 和 g ( i , j ) g(i,j) g(i,j)分别是原始图像和去噪后的图像在点 ( i , j ) (i,j) (i,j)处的像素值。 信噪…