安洵杯-复现-创新互联

reee

主要就是这个函数

创新互联是一家专业提供灌云企业网站建设,专注与网站设计、成都网站设计H5场景定制、小程序制作等业务。10年已为灌云众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

在这里插入图片描述

void __noreturn sub_401640()
{char Buffer[52]; // [esp+0h] [ebp-60h] BYREF
  char ArgList[16]; // [esp+34h] [ebp-2Ch] BYREF
  int v2; // [esp+44h] [ebp-1Ch]
  CHAR Text[13]; // [esp+48h] [ebp-18h] BYREF
  int v4; // [esp+55h] [ebp-Bh]
  __int16 v5; // [esp+59h] [ebp-7h]
  char v6; // [esp+5Bh] [ebp-5h]

  memset(Buffer, 0, 0x32u);
  v4 = 0;
  v5 = 0;
  v6 = 0;
  strcpy(ArgList, "Input ur flag: ");
  v2 = 0;
  strcpy(Text, "try agin bro");
  sub_401010("%s", (char)ArgList);
  gets_s(Buffer, 0x32u);
  if ( strlen(Buffer) != 24 )
  {MessageBoxA(0, Text, "0.0", 0);
    exit(0);
  }
  sub_401430(Buffer);
  ((void (__cdecl *)(char *))loc_4011B0)(Buffer);
  sub_401010("\npress any key to quit...\n", Buffer[0]);
  getwch();
  ExitProcess(0);
}

修复了下花指令,_security_cookie = 0BB40E64E,感觉修了和没修一样,估计就是个比对

在这里插入图片描述

这个应该就是加密后的flag了

在这里插入图片描述

加密函数

在这里插入图片描述

加密算法

int __usercall sub_401130@(int a1@, int a2@, unsigned int a3)
{int result; // eax
  int v4; // edi
  unsigned int i; // ebx
  unsigned __int8 v6; // dl
  int v8; // [esp+10h] [ebp-4h]

  result = 0;
  v4 = 0;
  v8 = a2;
  for ( i = 0; i< a3; a2 = v8 )
  {v4 = (v4 + 1) % 256;
    v6 = *(_BYTE *)(v4 + a2);
    result = (v6 + result) % 256;
    *(_BYTE *)(v4 + v8) = *(_BYTE *)(result + a2);
    *(_BYTE *)(result + v8) = v6;
    *(_BYTE *)(i + a1) ^= *(_BYTE *)((unsigned __int8)(v6 + *(_BYTE *)(v4 + v8)) + v8);
    ++i;
  }
  return result;
}

写个脚本出来就行

flag = [86,97,99,164,34,164,
     80,125,205,141,19,61,
     74,79,13,98,136,171,
     252,233,187,30,160,144]

s = [ord(i) for i in "D0g3"]
a2 = [0] * 256
v16 = [0] * 256
for i in range(256):
    v16[i] = s[i % 4]
    a2[i] = i

v9 = 0
for i in range(256):
    v10 = a2[i]
    v9 = (a2[i] + v16[i] + v9) % 256
    a2[i] = a2[v9]
    a2[v9] = v10
print("a2 = ",a2)
v4 = 0
result = 0
for i in range(24):
    v4 = (v4 + 1) % 256
    v6 = a2[v4]
    result = (v6 + result) % 256
    a2[v4] = a2[result]
    a2[result] = v6
    flag[i] ^= a2[(a2[v4] + v6) % 256]


for i in range(24):
    print(chr(flag[i]),end='')
print(flag)

flag:d0g3{This_15_FindWind0w}

Misc GumpKing

打开是个游戏,我想着给他解包出来看的,结果解出来一堆素材,看了半天也找不到flag,看别人wp说玩到100下就行(这玩意我玩不到10下,鼠标滑动来控制左右,但是不知道咋的跳几下就划不动了。。。)

在这里插入图片描述

虚幻4(ue4)引擎加密pak解包教程

在这里插入图片描述

直接拿ce试试

在这里插入图片描述

跳完得到的分数输进去扫描一次,扫三次就行了0x240CDF64存的就是得分

在这里插入图片描述

看下是哪个地方改写了分数

在这里插入图片描述

一共有两个地方,第一个是+1,第二个是清零

在这里插入图片描述

直接给第二个下落的代码改成加0x100

在这里插入图片描述

只要跳一下,数字就出来了,就是有点臭。。。。

在这里插入图片描述

flag:d0g3{1145141919810}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:安洵杯-复现-创新互联
URL标题:http://scyanting.com/article/ccgodi.html