当前位置: 首页 > 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相同,然后对应地进行一位一位地加密

http://www.lryc.cn/news/443796.html

相关文章:

  • 偶数、奇数、整数与指数
  • 关于c#中异步async和await的理解
  • mysql等保数据库命令
  • 云平台在大规模设备管理和数据分析中的作用
  • 数据结构-树和二叉树
  • 树和二叉树的概念以及结构
  • c语言习题
  • Python 低层多线程接口_thread的用法
  • flutter基础 --dart语法学习
  • 新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)
  • mac 怎么查看CPU核数
  • Vue生命周期;Vue路由配置;vue网络请求;vue跨域处理
  • 汽车电子电气架构从12V提升至48V,带来那些好处? 包括那些改变?
  • springboot实战学习笔记(2)
  • Python练习宝典:Day 1 - 选择题 - 基础知识
  • macOS平台(intel)编译MAVSDK安卓平台SO库
  • set的相关函数(3)
  • Python MongoDB
  • 安国U盘量产工具系列下载地址
  • 2024年最新版Vue3学习笔记
  • FX5 CPU模块和以太网模块的以太网通信功能
  • 【结构型】树形结构的应用王者,组合模式
  • C++——求3*3矩阵对角元素之和。
  • nodejs基于vue电子产品商城销售网站的设计与实现 _bugfu
  • GO Ants 学习
  • Scikit-learn (`sklearn`) 教程
  • 【计网】从零开始掌握序列化 --- JSON实现协议 + 设计 传输\会话\应用 三层结构
  • Qt 模型视图(四):代理类QAbstractItemDelegate
  • django+vue
  • HCIA--实验十七:EASY IP的NAT实现