攻防世界-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}

posted on 2021-02-21 14:35  YG2  阅读(250)  评论(0)    收藏  举报