zoukankan      html  css  js  c++  java
  • [BUUCTF]REVERSE——[MRCTF2020]Transform

    [MRCTF2020]Transform

    附件

    步骤:

    1. 例行检查,64位程序,无壳
      在这里插入图片描述
    2. 64位ida载入,找到关键函数
      在这里插入图片描述
      一开始让我们输入一个长度为33位的字符串,之后使用数组dword_40F040打乱了我们一开始输入的v6的值,打乱后的结果在与dword_40F040异或之后得到byte_40F0E0数组里的值
      在这里插入图片描述
    3. 理清楚程序干了什么直接写逆向算法
      首先将dword_40F040和byte_40F0E0异或一下得到打乱后的输入的字符串
      之后将打乱的字符串还原回去即可得到输入的字符串
    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]
    
    flag = [0]*33
    
    for i in range(len(dword_40F040)):
        byte_40F0E0[i] ^= dword_40F040[i]
    
    for i in range(len(dword_40F040)):
        flag[dword_40F040[i]] = byte_40F0E0[i]
        
    print (''.join([chr(x) for x in flag]))
    
    

    在这里插入图片描述

  • 相关阅读:
    Delphi 与 C/C++ 数据类型对照表(最新的tokyo)
    Delphi新语法 For ..In
    NSwag生成客户端调用代码
    微服务
    springcloud
    NET高性能IO
    秒杀场景
    CPU开销sql server 性能调优
    WinDbg调试分析 net站点 CPU100%问题
    全链路实践Spring Cloud 微服务架构
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273637.html
Copyright © 2011-2022 走看看