-
-
[原创]CTF2019第一题
-
发表于:
2019-4-1 17:45
8283
-
小白一枚,比赛都已经结束了才看到,果断下载下来试试自己可以菜到什么程度。
由此可以看出,输入的字符串经过处理里之后存入一个新的数组中。
从此处分析可得: 取新生成数组中每个值 ,作为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;
}
从此处分析可得: 取新生成数组中每个值 ,作为abcdefghiabcde数组的下标取值保存成新的字符串,接着比较。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)