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)
    
    
    
    

    在这里插入图片描述

  • 相关阅读:
    Burp Suite Intruder的4种攻击类型
    JSP Response Set Status
    Mybatis中的#和$的区别
    请求转发、请求重定向
    Spring IoC Container and Spring Bean Example Tutorial
    成员变量声明时初始化和构造方法中初始化的区别
    JDK开发WebService
    Mac设置截图保存位置
    Socket通信
    DOM4J解析xml
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779882.html
Copyright © 2011-2022 走看看