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反汇编有什么坑没

那就直接看看代码

cpp 复制代码
__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;
}




获取到正确的日期

md5加密后拼接.fluxfingers.net

后端服务器域名解析并返回正确的响应内容-

传统base64解密

简单的逐位异或

得到flag

最后的问题,就是这个时间是多少?

好玩的地方,这个时间是maya预言的世界末日时间

2012年12月21日

把linux时间设置成这个时间就好了

flag{e3a03c6f3fe91b40eaa8e71b41f0db12}

当然你也可以写个脚本

逆向还是要一条条的来

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

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习