欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XCTF RE:IgniteMe

程序员文章站 2022-05-15 11:50:55
...

XCTF RE:IgniteMe

查看基本信息,无壳

XCTF RE:IgniteMe

尝试运行

XCTF RE:IgniteMe

IDA F5

XCTF RE:IgniteMe

通过字符串“Congratulations”,我们发现重要函数sub_4011C0(),查看

XCTF RE:IgniteMe

分析正如上图中注释的一样,对v8的变换在for循环中,在if判断条件中,使用快捷键R即可将数值转换为字符,可以看到,是一个大小写转换的逻辑

来查看byte_4420B0

XCTF RE:IgniteMe

查看sub_4013C0()

XCTF RE:IgniteMe

根据上述的分析,我们写如下代码

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
	char s[]="GONDPHyGjPEKruv{{pj]aaa@qq.com";
	int v2=strlen(s);
	int byte_4420B0[]={0x0d,0x13,0x17,0x11,0x02,0x01,0x20,0x1d,
						0x0c,0x02,0x19,0x2f,0x17,0x2b,0x24,0x1f,
						0x1e,0x16,0x09,0x0f,0x15,0x27,0x13,0x26,
						0x0a,0x2f,0x1e,0x1a,0x2d,0x0c,0x22,0x04};

	for(int i=0;i<v2;i++)
	{
		s[i]=((s[i]^byte_4420B0[i])-72)^0x55;
		if(s[i]>='a' && s[i]<='z')
		{
			s[i]-=32;
			continue;
		}
		if(s[i]>='A' && s[i]<='Z')
		{
			s[i]+=32;
		}
	}
	printf("EIS{%s}\n",s);

	return 0;
}

XCTF RE:IgniteMe

 EIS{wadx_tdgk_aihc_ihkn_pjlm}

加油 : )

 

相关标签: reverse