• The_Maya_Society


    突然发现自己做了一些逆向题都没有写笔记
    今天,发现这道题有意思

    1.解压文件

    在这里插入图片描述

    在这里插入图片描述
    三个文件The Maya Society.html,maim.cc,maya.png
    当时我看到这个题的时候,我以为是不是会是js逆向
    看来是我蠢了

    这三个文件,main.css和maya.png这两个就是
    main.css这个就是这个主页的设计
    maya.png就是这张图
    在这里插入图片描述

    看看html有什么信息没有
    在这里插入图片描述
    在这里插入图片描述

    主要分析

    最后就是launcher这个文件
    在这里插入图片描述ELF文件

    IDA打开看看,很自然的就找到了main函数
    一次对应看看IDA反汇编有什么坑没
    那就直接看看代码

    __int64 __fastcall main(int a1, char **a2, char **a3)
    {
      size_t v3; // rbx
      size_t v4; // rax
      size_t v6; // rax
      size_t v7; // rax
      __int64 v8; // rdi
      time_t timer; // [rsp+18h] [rbp-128h] BYREF
      char v10[32]; // [rsp+20h] [rbp-120h] BYREF
      char src[32]; // [rsp+40h] [rbp-100h] BYREF
      char s[104]; // [rsp+60h] [rbp-E0h] BYREF
      __int64 v13; // [rsp+C8h] [rbp-78h] BYREF
      char v14[9]; // [rsp+D4h] [rbp-6Ch] BYREF
      char v15[9]; // [rsp+DDh] [rbp-63h] BYREF
      char v16[9]; // [rsp+E6h] [rbp-5Ah] BYREF
      char v17[9]; // [rsp+EFh] [rbp-51h] BYREF
      void (__fastcall *v18)(__int64); // [rsp+F8h] [rbp-48h]
      __int64 v19; // [rsp+100h] [rbp-40h]
      char *v20; // [rsp+108h] [rbp-38h]
      char *dest; // [rsp+110h] [rbp-30h]
      int *v22; // [rsp+118h] [rbp-28h]
      size_t v23; // [rsp+120h] [rbp-20h]
      struct tm *tp; // [rsp+128h] [rbp-18h]
    
      strcpy(v10, ".fluxfingers.net");
      timer = time(0LL);
      tp = localtime(&timer);
      strftime(s, 0x63uLL, "%Y-%m-%d", tp);
      v23 = strlen(s);
      mad5(s, v23);
      v22 = &dword_2030B8;
      snprintf(
        v17,
        9uLL,
        "%02x%02x%02x%02x",
        (unsigned __int8)dword_2030B8,
        BYTE1(dword_2030B8),
        BYTE2(dword_2030B8),
        HIBYTE(dword_2030B8));
      v22 = &dword_2030C0;
      snprintf(
        v16,
        9uLL,
        "%02x%02x%02x%02x",
        (unsigned __int8)dword_2030C0,
        BYTE1(dword_2030C0),
        BYTE2(dword_2030C0),
        HIBYTE(dword_2030C0));
      v22 = &dword_2030B4;
      snprintf(
        v15,
        9uLL,
        "%02x%02x%02x%02x",
        (unsigned __int8)dword_2030B4,
        BYTE1(dword_2030B4),
        BYTE2(dword_2030B4),
        HIBYTE(dword_2030B4));
      v22 = &dword_2030BC;
      snprintf(
        v14,
        9uLL,
        "%02x%02x%02x%02x",
        (unsigned __int8)dword_2030BC,
        BYTE1(dword_2030BC),
        BYTE2(dword_2030BC),
        HIBYTE(dword_2030BC));
      snprintf(src, 0x21uLL, "%s%s%s%s", v17, v16, v15, v14);
      v3 = strlen(src);
      v4 = strlen(v10);
      dest = (char *)malloc(v3 + v4 + 1);
      if ( !dest )
        return 1LL;
      *dest = 0;
      strcat(dest, src);
      strcat(dest, v10);
      v20 = (char *)sub_18A4(dest);
      if ( !v20 )
        return 1LL;
      v6 = strlen(v20);
      v19 = sub_15E0(v20, v6, &v13);
      v7 = strlen(v20);
      v18 = (void (__fastcall *)(__int64))sub_15E0(v20, v7, &v13);
      if ( !v19 )
        return 1LL;
      v8 = v19;
      sub_1858(v19, v13, v18);
      v18(v8);
      return 0LL;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    获取到正确的日期
    md5加密后拼接.fluxfingers.net
    后端服务器域名解析并返回正确的响应内容-
    传统base64解密
    简单的逐位异或
    得到flag

    最后的问题,就是这个时间是多少?
    好玩的地方,这个时间是maya预言的世界末日时间

    2012年12月21日
    把linux时间设置成这个时间就好了
    flag{e3a03c6f3fe91b40eaa8e71b41f0db12}

    当然你也可以写个脚本

    逆向还是要一条条的来
    不过最近再学习了操作系统,有些更多的理解了,对于汇编语言,反汇编还得多看才行

  • 相关阅读:
    C++语言GDAL批量裁剪多波段栅格图像:基于像元个数裁剪
    Kubernetes之本地存储
    网络协议--TFTP:简单文件传送协议
    CAPL学习之路-DoIP相关函数
    SQL语法之LIKE 操作符
    玄铁C906——物理内存保护(PMP)介绍
    Oracle集群管理-19C集群禁用numa和大页内存特性
    zabbix(一)
    数组中 forEach 和 Map 的区别
    糟糕,CPU100%了!!!
  • 原文地址:https://blog.csdn.net/m0_72827793/article/details/138170278