当前位置: 首页 > news >正文

re题(27)BUUFCTF-[MRCTF2020]Transform

BUUCTF在线评测 (buuoj.cn)

先到ida,先看一下字符串

找到主函数 

int __cdecl main(int argc, const char **argv, const char **envp)
{char Str[104]; // [rsp+20h] [rbp-70h] BYREFint j; // [rsp+88h] [rbp-8h]int i; // [rsp+8Ch] [rbp-4h]sub_402230(argc, argv, envp);sub_40E640("Give me your code:\n");sub_40E5F0("%s", Str);if ( strlen(Str) != 33 ){sub_40E640("Wrong!\n");system("pause");exit(0);}for ( i = 0; i <= 32; ++i ){byte_414040[i] = Str[dword_40F040[i]];  #把dword_40F040的数据作为str数组的下标,然后赋值给byte_414040,这是一个把str数组打乱顺序的操作,打乱顺序后的数据存在byte_414040里,作为flagbyte_414040[i] ^= LOBYTE(dword_40F040[i]);  # LOBYTE是取16bit数据的低8bit,再用dword_40F040的低8bit对byte_414040进行一个异或赋值给byte_414040,这一步是对byte_414040的一个异或加密#这两步里的dword_40F040只是一个中间变量,str数组是原始数据,byte_414040是加密后的flag}for ( j = 0; j <= 32; ++j ){if ( byte_40F0E0[j] != byte_414040[j] )#一个对比操作,对byte_40F0E0进行逆向即可{sub_40E640("Wrong!\n");system("pause");exit(0);}}sub_40E640("Right!Good Job!\n");sub_40E640("Here is your flag: %s\n", Str);system("pause");return 0;
}

大小端序问题 

这里8dup(0)是存8个0 

汇编: dup伪指令_year db 4 dup('0')-CSDN博客

清楚了逻辑

写个脚本

dword_40F040 = [0x9, 0x0A, 0x0F, 0x17, 0x7, 0x18, 0x0C, 0x6, 0x1, 0x10, 0x3, 0x11, 0x20, 0x1D, 0x0B, 0x1E, 0x1B, 0x16, 0x4, 0x0D, 0x13, 0x14, 0x15, 0x2, 0x19, 0x5, 0x1F, 0x8, 0x12, 0x1A, 0x1C, 0x0E, 0]byte_40F0E0 = [0x67, 0x79, 0x7B, 0x7F, 0x75, 0x2B, 0x3C, 0x52, 0x53, 0x79, 0x57, 0x5E, 0x5D, 0x42, 0x7B, 0x2D, 0x2A, 0x66, 0x42, 0x7E, 0x4C, 0x57, 0x79, 0x41, 0x6B, 0x7E, 0x65, 0x3C, 0x5C, 0x45, 0x6F, 0x62, 0x4D]str1 = [0] * 33flag = ''for i in range(33):byte_40F0E0[i] ^= dword_40F040[i]str1[dword_40F040[i]] = byte_40F0E0[i]for i in range(33):flag += chr(str1[i])
print(flag)#flag{Tr4nsp0sltiON_Clph3r_1s_3z}

本题考察了对数据打乱顺序和异或的加密方法,就是用一个数组作为中间值,数组长度与flag相同,然后对应地进行一位一位地加密

相关文章:

re题(27)BUUFCTF-[MRCTF2020]Transform

BUUCTF在线评测 (buuoj.cn) 先到ida&#xff0c;先看一下字符串 找到主函数 int __cdecl main(int argc, const char **argv, const char **envp) {char Str[104]; // [rsp20h] [rbp-70h] BYREFint j; // [rsp88h] [rbp-8h]int i; // [rsp8Ch] [rbp-4h]sub_402230(argc, argv…...

偶数、奇数、整数与指数

引言 在前面的课程中&#xff0c;我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型、函数的定义与使用、函数调用与作用域、函数的高级应用、质数、倍数与余数。本课…...

关于c#中异步async和await的理解

之前给大家介绍了所谓异步编程的用法&#xff0c;但是没有细致的理解到&#xff0c;今天想和大家一起探讨一下; 前文&#xff1a; C#笔记14 异步编程Async&#xff0c;await&#xff0c;task类-CSDN博客 异步的起初 应用程序会启动一个进程&#xff0c;一个进程可以有很多…...

mysql等保数据库命令

mysql数据库命令 默认安装位置&#xff1a;C:\Program Files\MySQL\MySQL Server 8.0\bin select version() from dual; desc mysql.user; 查看表中有哪些列 1、SELECT user, host, authentication_string, account_locked ,password_lifetime FROM mysql.user; 查询用户表…...

云平台在大规模设备管理和数据分析中的作用

在当代数字化转型的浪潮中&#xff0c;云平台作为信息技术基础设施的核心组件&#xff0c;扮演着无可替代的角色&#xff0c;尤其在大规模设备管理和数据分析领域&#xff0c;其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势&#xff0c;促进数据的高效…...

数据结构-树和二叉树

树 和 二叉树 1.树的概念 树 tree 是n(n>0)个节点的有限集 在任意的一个非空树中 (1)有且仅有一个特定的被称为 根(root) 的节点 (2)当n>1时, 其余的节点可分为m(m>0)个互不相交的有限集T1, T2, T3, .... …...

树和二叉树的概念以及结构

一起加油学数据结构 目录 树的概念以及结构 树的概念 树的相关概念 树的表示 二叉树的概念以及结构 二叉树的概念 特殊的二叉树 二叉树的性质 二叉树的存储结构 树的概念以及结构 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09…...

c语言习题

第三章 数据类型、运算符与表达式 一 单项选择题 1&#xff0e;下面四个选项中&#xff0c;均不是 c 语言关键字的选项是&#xff08; &#xff09;。 A) define IF Type B) getc char printf C) include scanf case D…...

Python 低层多线程接口_thread的用法

_thread是python标准库中的一个低层多线程API&#xff0c;可以在进程中启动线程来处理任务&#xff0c;并且提供了简单的锁机制来控制共享资源的同步访问。本文就_thread模块的用法和特性做个简单的演示。 文章目录 一、进程和线程的区别二、_thread模块的用法2.1 派生线程2.2…...

flutter基础 --dart语法学习

由于想要写一款性能较好,但是又可以一套代码多个平台运行的客户端app,所以选择了flutter 就去看了官方文档,大体发现flutter使用的dart语言和java和js差不多,感觉就是缝合怪。 Dart 是一种面向对象的编程语言&#xff0c;语法上与 Java、JavaScript 等语言有一些相似之处&…...

新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 邮箱绑定 📒📫 QQ邮箱📫 163邮箱📫 Hotmail邮箱📫 Gmail邮箱📫 Yahoo邮箱📫 iCloud邮箱📫 其他邮箱⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经为绑定第三方邮箱而感到困惑?你不是一个人!许多人在尝试将QQ邮…...

mac 怎么查看CPU核数

在 macOS 系统中&#xff0c;可以通过以下几种方法查看 CPU 核心数&#xff1a; 1. 使用“关于本机”查看 点击左上角的苹果图标&#xff08;&#xff09;。选择“关于本机”。在弹出的窗口中&#xff0c;系统会显示 Mac 的基本信息&#xff0c;包括 CPU 的类型和核心数。比…...

Vue生命周期;Vue路由配置;vue网络请求;vue跨域处理

一&#xff0c;Vue生命周期 <template><div > <h1 click"changeText">{{ info }}</h1></div> </template><script> export default {name: HelloWorld,data(){return{info:"介绍组件生命周期"}},methods:{chang…...

汽车电子电气架构从12V提升至48V,带来那些好处? 包括那些改变?

标签&#xff1a; 汽车电子电气架构&#xff1b; 从12V提升至48V&#xff1b; 汽车电子电气架构从12V提升至48V&#xff0c;带来那些好处&#xff1f; 包括那些改变&#xff1f; 将传统汽车的电子电气架构电压从12V提升至48V&#xff0c;既有显著的优势&#xff0c;也需要对车…...

springboot实战学习笔记(2)

目录 1、手动创建springboot工程&#xff0c;选择Maven构建。 2、Maven生成的&#xff0c;可能需要再main目录下new一个resources目录&#xff0c;再在其下目录new一个配置文件。 3、 pom文件中让当前的工程继承父工程依赖&#xff1a;、删去无用依赖。 4、引入后端环境所需要的…...

Python练习宝典:Day 1 - 选择题 - 基础知识

目录 一、踏上Python之旅二、Python语言基础三、流程控制语句四、序列的应用 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print()2.Python安装成功的标志是在控制台(终端)输入python/python3后,命令提示符变为: A.&…...

macOS平台(intel)编译MAVSDK安卓平台SO库

1.下载MAVSDK: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译liblzma 修改CMakeLists.txt文件增加C与CXX指令-fPIC set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}") 修改如下:…...

set的相关函数(3)

3.删除 //删除 /* int main() {set<int> s;s.insert({ 2,4,5,2,6,8,10,15 });for (auto e : s){cout << e << " ";}cout << endl;//删除最小的元素就删除排序后的首元素s.erase(s.begin());for (auto e : s){cout << e << "…...

Python MongoDB

MongoDB 是目前最流行的 NoSQL 数据库之一&#xff0c;使用的数据类型 BSON&#xff08;类似 JSON&#xff09;。 MongoDB 数据库安装与介绍可以查看我们的 MongoDB 教程。 PyMongo Python 要连接 MongoDB 需要 MongoDB 驱动&#xff0c;这里我们使用 PyMongo 驱动来连接。 …...

安国U盘量产工具系列下载地址

来源地址&#xff08;访问需要科学工具&#xff09;&#xff1a;AlcorMP (Последняя версия ALCOR U2 MP v23.08.07.00.H) – [USBDev.ru] 版本列表&#xff1a; AlcorMP&#xff08;最新版本的 ALCOR U2 MP v23.08.07.00.H&#xff09; AlcorMP是在Alcor Mic…...

2024年最新版Vue3学习笔记

本篇文章是记录来自尚硅谷禹神2023年课程的学习笔记&#xff0c;不得不说禹神讲的是真的超级棒&#xff01; 文章目录 创建Vue3工程main.ts文件解析初始化项目写一个简单的效果 Vue3核心语法setup函数setup和选项式的区别setup语法糖指定组件名称 响应式数据ref函数定义基本类…...

FX5 CPU模块和以太网模块的以太网通信功能

FX5 CPU模块和以太网模块的以太网通信功能的概要如下所示。 CPU模块的内置以太网端口的通信规格如下所示。 1、与MELSOFT的直接连接 不使用集线器&#xff0c;用1根以太网电缆直接连接以太网搭载模块与工程工具(GX Torks3)。无需设定IP地址&#xff0c;仅连接目标指定即可进行…...

【结构型】树形结构的应用王者,组合模式

目录 一、组合模式1、组合模式是什么&#xff1f;2、组合模式的主要参与者&#xff1a; 二、优化案例&#xff1a;文件系统1、不使用组合模式2、通过组合模式优化上面代码优化点&#xff1a; 三、使用组合模式有哪些优势1、统一接口&#xff0c;简化客户端代码2、递归结构处理方…...

C++——求3*3矩阵对角元素之和。

没注释的源代码 #include <iostream> using namespace std; int main() { int a[3][3],i,j,sum0; cout<<"请输入a组中的元素:"<<endl; for(i0;i<2;i) { for(j0;j<2;j) { cin>>a[i][j]…...

nodejs基于vue电子产品商城销售网站的设计与实现 _bugfu

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式&#xff0c;开发软件有很多种可以用&#xff0c;本次开发用到的软件是vscode&#xff0c;用到的数据库是…...

GO Ants 学习

文章目录 主要特性安装基本用法1. 创建协程池并提交任务2. 带返回值的任务提交3. 自定义协程池的参数4. 获取协程池状态 应用场景优势资源释放性能对比总结 ants 是一个高性能的 Go 语言协程池库&#xff0c;专注于有效地管理 Go 协程的数量。它通过复用协程减少了创建和销毁协…...

Scikit-learn (`sklearn`) 教程

Scikit-learn (sklearn) 教程 Scikit-learn 是 Python 中最流行的机器学习库之一&#xff0c;提供了丰富的机器学习算法、数据预处理工具以及模型评估方法&#xff0c;广泛应用于分类、回归、聚类和降维等任务。 在本教程中&#xff0c;我们将介绍如何使用 Scikit-learn 进行…...

【计网】从零开始掌握序列化 --- JSON实现协议 + 设计 传输\会话\应用 三层结构

唯有梦想才配让你不安&#xff0c; 唯有行动才能解除你的不安。 --- 卢思浩 --- 从零开始掌握序列化 1 知识回顾2 序列化与编写协议2.1 使用Json进行序列化2.2 编写协议 3 封装IOService4 应用层 --- 网络计算器5 总结 1 知识回顾 上一篇文章我们讲解了协议的本质是双方能够…...

Qt 模型视图(四):代理类QAbstractItemDelegate

文章目录 Qt 模型视图(四):代理类QAbstractItemDelegate1.基本概念1.1.使用现有代理1.2.一个简单的代理 2.提供编辑器3.向模型提交数据4.更新编辑器的几何图形5.编辑提示 Qt 模型视图(四):代理类QAbstractItemDelegate ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方…...

django+vue

1. diango 只能加载静态js&#xff0c;和flask一样 2. 关于如何利用vue创建web&#xff0c;请查看flask vue-CSDN博客 3. 安装django pip install django 4. 创建新项目 django-admin startproject myproject 5.django 中可以包含多个app 5.1 创建一个app cd myprojec…...