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

【BUUCTF逆向题】[MRCTF2020]Transform

一.[MRCTF2020]Transform

64位无壳,IDA打开发现main函数进入反编译
在这里插入图片描述
阅读程序
先输入33位code再加密处理然后验证是否相等的题型
逆向看,验证数组byte_40F0E0已知
在这里插入图片描述
再往上看加密处理方式
就是将Str(我们输入的flag)的每一个索引处的值与其索引进行异或运算,但是这个索引是打乱的不是按照顺序来的
我们已知异或是可逆的,所以将用来验证的数组(即处理后的数组(也是根据乱序索引数组打乱的))与乱序索引数组异或就得到了乱序的原flag
补充LOBYTE取低8位即低字节的意思,这里乱序索引数组是int整形4个字节,但是索引都是0-255(一字节8位,2的8次方-1)所以有效数据都存在于低字节,就不需要管了
在这里插入图片描述

补充异或是建立在二进制上的,同0不同1
补充:**8 dup(0)**是8个存储单元都置0(刚开始这里索引只有32个数据没有0优点懵,现在明白了最后一个是0)

写脚本:

flag = [0]*33
print(flag)
b = [103, 121, 123, 127, 117, 43, 60, 82, 83, 121, 87, 94,93, 66, 123, 45, 42, 102, 66, 126, 76, 87, 121, 65,107, 126, 101, 60, 92, 69, 111, 98, 77]
print(len(b))
a = [9, 10, 15, 23, 7, 24, 12, 6, 1, 16, 3, 17, 32, 29, 11,30, 27, 22, 4, 13, 19, 20, 21, 2, 25, 5, 31, 8, 18,26, 28, 14,0]
print(len(a))
for i in range(33):flag[a[i]] = chr(a[i]^b[i])
print(''.join(flag))

补充:这里直接复制已知数据不方便,可以Shift+E键提取数据
在这里插入图片描述
补充:列表按照索引存储要先占位(申请存储空间),所以这里[0]*33就可以实现
得到MRCTF{Tr4nsp0sltiON_Clph3r_1s_3z}

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

相关文章:

  • 漏洞挖掘 | 基于mssql数据库的sql注入
  • Java 中 LinkedList 的底层源码
  • 使用服务器部署DeepSeek-R1模型【详细版】
  • k8s,1.修改容器内主机名和/etc/hosts 文件,2.root特权容器,3.pod安全策略(基于名称空间
  • MSPFN 代码复现
  • 除了console.error,还有什么更好的错误处理方式?
  • 力扣.270. 最接近的二叉搜索树值(中序遍历思想)
  • Yageo国巨的RC系列0402封装1%电阻库来了
  • wait/notify/join/设计模式
  • Windows Docker笔记-Docker拉取镜像
  • 七大排序思想
  • intra-mart实现简易登录页面笔记
  • SpringBoot整合RocketMQ
  • 深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术
  • 项目顺利交付,几个关键阶段
  • 第七天 开始学习ArkTS基础,理解声明式UI编程思想
  • windows C++ Fiber (协程)
  • 游戏引擎学习第89天
  • 2025新鲜出炉--前端面试题(一)
  • 教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)
  • Pyecharts系列课程04——折线图/面积图(Line)
  • 变压器-000000
  • 凝思60重置密码
  • linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}
  • 【教程】docker升级镜像
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写应用APP
  • python代码
  • React 打印插件 -- react-to-print
  • 探索C语言简易计算器程序的实现与优化
  • 深入了解 MySQL:从基础到高级特性