攻防世界-Reverse-Game

news2025/1/11 10:03:50

题目描述:下载附件,得到一个exe程序,运行该程序,可以看到如下的界面

根据描述信息说明:

a. 这是一个电路,有8个开关,只有8个开关全部闭合,才能够获取到flag;

b. 其中n表示开关的编号,我们输入n就可以改变第n个开关的状态,但是第n个开关改变状态时,其相邻两个开关的状态也会发生变化。

c. 刚开始,所有的开关都是开启状态,我们需要做的就是改变开关的状态,使得所有开关都关闭

1. 思路分析

这道题其实有两种思路:

1.1 按照规则来,不断输入n,最后使得开关都闭合

1.2 flag就在这个exe文件中,对这个程序进行逆向分析即可

2. 解题过程

 2.1 输入n的次序有多种,我这边成功的一个序列为 2->5->8->1->4->7->3->6

2.2 对exe进行逆向

使用ida对这个exe文件进行逆向

我们找到这个main函数,函数中当8个开关开启后,会进入到 sub_457AB4这个函数中,对这个函数进行跟踪,最后会跳转到sub_457AB4这个函数中

对这个函数进行分析:

写程序获取到flag:

#include<stdio.h>


int main(){
	int b[56] = {18,64,98,5,2,4,6,3,6,48,49,65,32,12,48,65,31,78,62,32,49,32,1,57,96,3,21,9,4,62,3,5,4,1,2,3,44,65,78,32,16,97,54,16,44,52,32,64,89,45,32,65,15,34,18,16};
	int a[56] = {123,32,18,98,119,108,65,41,124,80,125,38,124,111,74,49,83,108,94,108,84,6,96,83,44,121,104,110,32,95,117,101,99,123,127,119,96,48,107,71,92,29,81,107,90,85,64,12,43,76,86,13,114,1,117,126};
	for(int i = 0;i < 56; i++) {
		a[i] ^= b[i];
		a[i] ^= 0x13;
		printf("%c", a[i]);
	}
}

运行程序:

 

最终flag为:zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

总结:这道题第二种方法仅适用于练习,第二种方法相比于第一种要复杂很多。但是用作练习是合适的,因为第二种解法中涉及到了逆向,字符编码转换等知识点。

 

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

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

相关文章

Unity shader - 纹理采样

目录 1.什么是UV 2.凹凸纹理 3.渐变纹理映射 4.遮罩纹理 1.什么是UV 对于三维模型&#xff0c;有两个最重要的坐标系统&#xff0c;一是顶点的位置&#xff08;X&#xff0c;Y&#xff0c;Z&#xff09;坐标&#xff0c;另一个就是UV坐标。什么是UV&#xff1f;简单的…

关于机器人精度的总结(重复精度和绝对精度区分)

ABB系列某款机器人精度参数表 机械臂是工业生产中的重要设备,在焊接码垛 以及 非 接触测量等 领域中有 着重要应 用。然而由于机械臂本体制造中存在机械制造公差装配误差导致的运动学参数误差以及电机转角与关节转角间减速比误差等,导致机械臂存在重复性定位精度较高(0.05 mm …

EMQ的介绍及整合SpringBoot的使用

首先先了解一下底层的协议: 1. MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅 &#xff08;publish/subscribe&#xff09;模式的"轻量级"通讯协议&#xff0c;该协议构建…

python实现递归算法解决年龄问题

一、问题描述 有5个人坐在一起&#xff0c;问第5个人多少岁&#xff0c;他说比第4个人大2岁。问第4个人多少岁&#xff0c;他说比第3个人大2岁。问第3人多少岁&#xff0c;他说比第2个人大2岁。问第2个人多少岁&#xff0c;他说比第1个人大2岁。最后问第1个人多少岁&#xff0…

ALLEGRO之SHAPE

ALLEGRO中的SHAPE菜单对应AD中的Polygon Pour&#xff0c;即铺铜操作。 1. Polygon&#xff1a;铺铜&#xff0c;在Options选择对应子层&#xff08;例如Etch-Top&#xff09;&#xff0c;选择Dynamic copper&#xff08;动态铺铜&#xff0c;会自动避让过孔&#xff0c;Static…

MIT 6.S081 教材第五章内容 -- 中断与设备驱动--上

MIT 6.S081 教材第五章内容 -- 中断与设备驱动--上 引言真实操作系统内存使用情况(上一节回顾)中断和设备驱动Interrupt硬件部分设备驱动概述在XV6中设置中断UART驱动的top部分UART驱动的bottom部分Interrupt相关的并发UART读取键盘输入Interrupt的演进小结代码&#xff1a;控制…

VanillaNet 原理与代码解读

paper&#xff1a;VanillaNet: the Power of Minimalism in Deep Learning official implementation&#xff1a; GitHub - huawei-noah/VanillaNet 存在的问题 虽然复杂网络的性能很好&#xff0c;但它们日益增加的复杂性给部署带来了挑战。例如&#xff0c;ResNets中的sh…

浏览器工作原理

浏览器&#xff08;也称为网络浏览器或互联网浏览器&#xff09;是安装在我们设备上的软件应用程序&#xff0c;使我们能够访问万维网。在阅读这篇文字时&#xff0c;你实际上正在使用一个浏览器。 有许多浏览器正在被使用&#xff0c;截至2022年&#xff0c;使用最多的是&…

为了找到好工作,花2个月时间整理了3.5W字的自动化测试面试题(答案+学习路线)!

从5月初开始找工作到现在&#xff0c;先后面试了阿里巴巴、字节跳动、网易、快手的测试开发岗。 大公司对于测试开发的要求相比来说高很多&#xff0c;要求掌握的知识点的广度和深度层次也比较高&#xff0c;遂整理了这两个月的面试题目文档供大家参考&#xff0c;同时也是为了…

基于java+swing+mysql商城购物系统

基于javaswingmysql商城购物系统 一、系统介绍二、功能展示1.项目骨架2.主界面3.用户登陆4.添加商品类别5、添加商品6、商品管理 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型&#xff1a;Java SE项目 项目名称&#xff1a;商城购物系统 用户类型&#xff1a;双…

【C++学习】线程库 | IO流 | 空间配置器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《C学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 一、线程库 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如w…

【Python爬虫开发基础⑥】计算机网络基础(Web和HTTP)

专栏&#xff1a;python网络爬虫从基础到实战 欢迎订阅&#xff01;近期还会不断更新~ 另外&#xff1a;如果想要看更多的计算机网络知识&#xff0c;可以关注我的专栏&#xff1a;计算机网络 往期推荐&#xff1a; 【Python爬虫开发基础①】Python基础&#xff08;变量及其命名…

【数据结构】特殊矩阵的压缩存储

&#x1f387;【数据结构】特殊矩阵的压缩存储&#x1f387; &#x1f308; 自在飞花轻似梦,无边丝雨细如愁 &#x1f308; &#x1f31f; 正式开始学习数据结构啦~此专栏作为学习过程中的记录&#x1f31f; 文章目录 &#x1f387;【数据结构】特殊矩阵的压缩存储&#x1f38…

C语言学习(二十六)---指针练习题(二)

在上节的内容中&#xff0c;我们进一步学习了有关指针的内容&#xff0c;并做了一些关于指针的题目&#xff0c;今天我们将继续练习一些指针的题目&#xff0c;以便大家更好的理解和掌握指针的知识&#xff0c;好了&#xff0c;话不多说&#xff0c;开整&#xff01;&#xff0…

【c++11】 左值引用和右值引用

c11特性 右值引用左值引用和右值引用左值引用右值引用比较 右值引用的应用左值引用的短处右值引用解决问题移动构造 STL的改动move()函数结语 右值引用 c从出现就有着引用的语法&#xff0c;但是在c11后又新增了右值引用的新特性&#xff0c;以往所学的引用成了左值引用。非左…

代码随想录算法训练营第四十二天| 背包问题

标准背包问题 有n件物品和一个最多能背重量为w 的背包。 第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 举一个例子&#xff1a; 背包最大重量为4。 物品为&#xff1a; 重量价…

5.2.3目录与文件之权限意义

现在我们知道了Linux系统内文件的三种身份&#xff08;拥有者、群组与其他人&#xff09;&#xff0c;知道每种身份都有三种权限&#xff08;rwx&#xff09;&#xff0c; 已知道能够使用chown, chgrp, chmod去修改这些权限与属性&#xff0c;当然&#xff0c;利用ls -l去观察文…

《C++高级编程》读书笔记(十:揭秘继承技术)

1、参考引用 C高级编程&#xff08;第4版&#xff0c;C17标准&#xff09;马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门&#xff0c;笔记链接如下 21天学通C读书笔记&#xff08;文章链接汇总&#xff09; 1. 使用继承构建类 1.1 扩展类 当使用 C 编写类定义时&#xf…

WMS中Choreographer 配合 VSYNC 中断信号

WMS中Choreographer 配合 VSYNC 中断信号 1、了解SurfaceFlinger中VSYNC信号刷新2、Choreographer 舞蹈编导2.1 Choreographer初始化2.2 FrameHandler中处理任务2.3 FrameDisplayEventReceiver初始化3.4 简易流程图 3、ViewRootImpl中scheduleTraversals3.1 postCallback 通过n…

java——IO与NIO

文章目录 1. 传统IO模型字节流字符流 2. NIO模型 Java中的IO&#xff08;输入输出&#xff09;是用于在程序中读取和写入数据的一种机制。Java提供了两种不同的IO模型&#xff1a;传统的IO模型和NIO&#xff08;New IO&#xff09;模型。 1. 传统IO模型 在传统的IO模型中&…