BUUUCTF:[羊城杯 2020]signin
题目来源:https://buuoj.cn/challenges#[%E7%BE%8A%E5%9F%8E%E6%9D%AF%202020]signin

题目给了一段明文
BCEHACEIBDEIBDEHBDEHADEIACEGACFIBDFHACEGBCEHBCFIBDEGBDEGADFGBDEHBDEGBDFHBCEGACFIBCFGADEIADEIADFH
从别的师傅那找到了该加密的pdf(好像叫toy加密)
关键在这张替换表

先将明文每四位替换,题目提示二表倒立,即将该表倒序再替换,形象的来说就是
ACEG->M->Y ADEG->R->Q BCEG->K->I BDEG->S->E
脚本
list1 = {'M':'ACEG','R':'ADEG','K':'BCEG','S':'BDEG','A':'ACEH','B':'ADEH','L':'BCEH','U':'BDEH','D':'ACEI','C':'ADEI','N':'BCEI','V':'BDEI','H':'ACFG','F':'ADFG','O':'BCFG','W':'BDFG','T':'ACFH','G':'ADFH','P':'BCFH','X':'BDFH','E':'ACFI','I':'ADFI','Q':'BCFI','Y':'BDFI'}
list2 = original_list = ['M','R','K','S','A','B','L','U','D','C','N','V','H','F','O','W','T','G','P','X','E','I','Q','Y']
list2_re =list2[::-1]
ori_str = 'BCEHACEIBDEIBDEHBDEHADEIACEGACFIBDFHACEGBCEHBCFIBDEGBDEGADFGBDEHBDEGBDFHBCEGACFIBCFGADEIADEIADFH'
flag_1 = ''
for i in range(0,len(ori_str),4):
_val = ori_str[i:i+4]
for key, val in list1.items():
if val == _val:
flag_1 += key
print(flag_1)
flag = ''
for i in flag_1:
for j,k in enumerate(list2):
if i == k:
print(i+"--"+k)
flag += list2_re[j]
print(flag)
print(flag)
得到GWHTTOYSAYGREENTEAISCOOL
GWHT是羊城杯的头
flag{TOYSAYGREENTEAISCOOL}
参考:https://www.bilibili.com/read/cv13794214

浙公网安备 33010602011771号