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

[MRCTF2020]Transform

查壳,拖入64位IDA
LOBYTE8位就是一个字节,在此处无意义,因为我们输入的本来就是按字节输入的

设 a = byte_414040,b=dword_40F040,c=byte_40F0E0,输入的字符串为flag;

从题目里得到 加密代码

a[i] = flag[b[i]];
a[i] ^= b[i];
c == a
即c[i] = a[i] ^ b[i]
解密就反过来 ,因为a是不知道的,所以就先解除a
a = a ^ b 即 a = c ^ b
然后 flag[b[i]] = a[i]

b = [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]
a = [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]

flag = [0]*33

for i in range(len(b)):
    a[i] ^= b[i]

for i in range(len(b)):
    flag[b[i]] = a[i]
print (''.join([chr(x) for x in flag]))


http://www.kler.cn/a/413562.html

相关文章:

  • 【unity小技巧】unity常用的编辑器扩展
  • PHP中类名加双冒号的作用
  • [Android Studio] layoutUI显示顶部标题栏以及常用的标题修改
  • goframe开发一个企业网站 MongoDB 完整工具包18
  • [chrome]黑色界面插件,PDF合并插件
  • 操作系统调度算法——针对实习面试
  • Qt开发:信号与槽的介绍和使用
  • 企业培训系统开发指南:基于源码的企业内训APP解决方案
  • C#基础46-50
  • 什么是域名监控?
  • c++调用python
  • Docker 入门二-安装Docker
  • cocos creator 3.8 俄罗斯方块Demo 10
  • Python 网络爬虫进阶:动态网页爬取与反爬机制应对
  • shell查看服务器的内存和CPU,实时使用情况
  • 若依框架部署在网站一个子目录下(/admin)问题(
  • 嵌入式Linux学习——uboot篇(1)
  • 8 设计模式之简单工厂模式
  • 《物联网智能项目》
  • Linux笔记---进程:进程优先级