[ACTF新生赛2020]crypto-classic0

打开压缩包里面有三种文件:

 

hint文件内容:

  哼,压缩包的密码?这是小Z童鞋的生日吧==

 

cipher文件内容:

  Ygvdmq[lYate[elghqvakl}

 

howtoencrypt是一个加密的压缩文件,里面有一个classic0.c的文件

 

 首先试着解密cipher文件的密文放入随波逐流工具解密看一下:

 

 未发现明显特殊的明文,于是再去看hint文件给的提示,很明显压缩包的密码是生日,使用一个弱口令密码,我们直接爆破压缩包

爆破密码得到:

 密钥是19990306

 

得到classic0.c,并打开查看

代码如下:

#include<stdio.h>

char flag[25] = ***

int main()
{
  int i;
  for(i=0;i<25;i++)
  {
    flag[i] -= 3;
    flag[i] ^= 0x7;
    printf("%c",flag[i]);
  }
  return 0;
}

 

分析题目代码,是要我们返回还原初始的明文,因此,题目中给的cipher的密文就可以用上了,直接写解密代码

代码如下:

cipher = 'Ygvdmq[lYate[elghqvakl}'
for i in range(0,24):
flag = ord(cipher[i]) ^ 0x7
flag += 3
print(chr(flag),end='')
# actf{my_naive_encrytion}

总结:此题很简单,考点就是压缩包爆破,然后通过看c代码反向还原flag明文  

 

  

posted @ 2022-12-02 15:10  Pevilo7x  阅读(478)  评论(0)    收藏  举报