下载题目得到一个MFC程序,打开看一下有一个窗口。任意输入一串字符串看一下返回结果貌似没啥用。







可以看到这里通过对用户输入的判断以及运算返回一个值v5,这个值将传给上面的a1。
经过对伪代码的分析,我写了下面一段C程序解出flag,仅供参考。
#include<stdio.h>
intmain(){
chara[]=”KanXueCTF2019JustForhappy”;
charb[]=”abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ”;
intc[25];
inti;int j;
for(i=0;i<sizeof(a);i++){
for(j=0;j<sizeof(b);j++){
if(a[i]==b[j])
c[i]=j;
}
}//计算每个字符在字符串中的位置
intx;
for(i=0;i<25;i++){
for(j=48;j<=122;j++){
if(j>57||j<48){
if(j>122||j<97){
if(j>90||j<65)
continue;
else
x=j-29;
}
else
x=j-87;
}
else
x=j-48;
if(x==c[i])
printf(“%c”,j);//此处直接将ASCII码值转换为字符串
}
}
printf(“\n”);
return0;
}
来源:freebuf.com 2019-03-25 13:28:03 by: 凯信特安全团队

