1. 程式人生 > 其它 >[ACTF新生賽2020]crypto-classic0

[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明文