zoukankan      html  css  js  c++  java
  • CG-CTF simple machine

    这题讲道理还是蛮坑的,有些点如果不会的话,会卡死你,然后就是代码有点长,需要有很好的耐心。
    找到主函数:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这里的mmap函数,是一个分配内存的函数,主要是存放文件的,下午也是百度了下才知道,这东西对于文件的存取和共享修改的效率有很高的提高,这里就简要的认为是个分配内存空间的函数,同时360的加固反调试mmap函数会去检测traceid的值,进行反调试,虽然这种绕过也挺简单的。2333
    二.加密函数,加密在这两个函数里面。
    在这里插入图片描述
    首先第一个函数,点击进入。
    在这里插入图片描述
    发现这个函数,将那个分配的内存空间,当做栈来操作了。
    在这里插入图片描述
    这个函数,是入栈
    在这里插入图片描述
    这个函数,是出栈。
    这个可以点击进去看,就是相当于手动撸了个出栈和入栈的代码。
    重点是下面的代码,变量很多,要耐心看。。。
    在这里插入图片描述
    相等于.input[i]^arr[i%arr.length],这里就比较好逆向回去了,再继续看第二个加密函数
    在这里插入图片描述
    发现就是调换个位置。。写个脚本直接还原回去就完事了。

    tmp="feeddeadbeefcafe"
    lentmp=len(tmp)
    # xxx^tmp[i%lentmp]
    #
    arr=[0x00, 0x03, 0x09, 0x3A, 0x05, 0x0E, 0x02, 0x16, 0x0F, 0x1F, 0x12, 0x56, 0x3B, 0x0B, 0x51, 0x50, 0x39, 0x00, 0x09, 0x1F, 0x50, 0x04, 0x14, 0x57, 0x3B, 0x12, 0x07, 0x3C, 0x1C, 0x3A, 0x15, 0x05, 0x0B, 0x08, 0x06, 0x01, 0x04, 0x12, 0x16, 0x39, 0x05, 0x0B, 0x50, 0x57, 0x09, 0x12, 0x0A, 0x27, 0x13, 0x17, 0x0E, 0x02, 0x55,0x18]
    t1=[z for z in range(54)]
    for i in range(3):
      for j in range(18):
        t1[i+3*j]=arr[18*i+j]
    flag=""
    for w in range(54):
      flag+=chr(ord(tmp[w%lentmp])^t1[w])
    print(flag)
    
    
    
    

    在这里插入图片描述

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779882.html
Copyright © 2011-2022 走看看