攻防世界-666 wp
首先下载附件解压到桌面,将附件移到ExE判断文件是否有壳

无壳,是64位ELF类型的可执行文件,所以将文件放进ida64,查看主函数
v5是需要输入的内容,v5的长度等于key,用s和enflag进行比较,相等就输出You are Right .
观察encode函数

a1即为主函数中的v5,a2即为主函数中的s,对a1进行处理可以得到a2,根据循环可写逆过程
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 char a1[20],a2[20]={"izwhroz\"\"w\"v.K\".Ni"},v3[32],v4[32],v5[40]; 7 int v6,i; 8 i=0; 9 v6=0; 10 for(i=15;i>=0;i-=3) 11 { 12 v3[i+2]=a2[i+2]; 13 v4[i+1]=a2[i+1]; 14 v5[i]=a2[i]; 15 a1[i+2]=v3[i+2]^18^6; 16 a1[i+1]=(v4[i+1]^18)+6; 17 a1[i]=(18^v5[i])-6; 18 } 19 a1[18]='\0'; 20 printf("%s",a1); 21 return 0; 22 }
运行得到flag:unctf{b66_6b6_66b}
浙公网安备 33010602011771号