首页
社区
课程
招聘
[原创]CTF2019第一题
2019-4-1 17:45 7496

[原创]CTF2019第一题

2019-4-1 17:45
7496
小白一枚,比赛都已经结束了才看到,果断下载下来试试自己可以菜到什么程度。

由此可以看出,输入的字符串经过处理里之后存入一个新的数组中。


从此处分析可得: 取新生成数组中每个值 ,作为abcdefghiabcde数组的下标取值保存成新的字符串,接着比较。

到此分析完毕
// kanxue_2019ctf_01.cpp : Defines the entry point for the console application.
//

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

int main(int argc, char* argv[])
{
	char* cmp_str = "KanXueCTF2019JustForhappy";
	char* raw_str = "abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ";	
	char index_arr[30] = {0};
	char pwd[30] = {0};
	
	for (int i=0;i<strlen(cmp_str);i++)
	{
		for (int j = 0; j < strlen(raw_str);j++ )
		{
			if (cmp_str[i] == raw_str[j])
			{
				index_arr[i] = j;
				//printf("%c %c  %d \n",cmp_str[i],raw_str[j] ,j);
				break;
			}
		}
	}
	
	for (i=0;i<strlen(cmp_str);i++)
	{
		if (index_arr[i]+48 >=48 && index_arr[i]+48 <= 57 )
		{
			pwd[i] = index_arr[i]+48;
			printf("%c",index_arr[i]+48);
		}
		
		if (index_arr[i]+87 >=97 && index_arr[i]+87 <= 122 )
		{
			pwd[i] = index_arr[i]+87;
			printf("%c",index_arr[i]+87);
		}
		
		if (index_arr[i]+29 >=65 && index_arr[i]+29 <= 90 )
		{
			pwd[i] = index_arr[i]+29;
			printf("%c",index_arr[i]+29);
		}
	}
	
	printf("\n%s\n", pwd);
	
	getchar();
	printf("Hello World!\n");
	return 0;
}




[培训]《安卓高级研修班(网课)》月薪三万计划

收藏
点赞1
打赏
分享
最新回复 (2)
雪    币: 876
活跃值: (1801)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PSE 2019-4-3 13:41
2
0
过来学习第一帖
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
VsosV 2019-4-5 18:45
3
0
学习了
游客
登录 | 注册 方可回帖
返回