Advertisement

buuctf crypto

阅读量:

问题一:凯撒密码对应的Base64编码方案 给出以下字符串:e6Z9i]8RUQHE{RnY{QXgQnQ{XVlRXlpXI5Q6Q6SKY8jUAA

要求:解密获得flag
解题思路:

观察最后部分出现AA后联想到base64编码通常会在末尾添加两个等号==随后注意到A对应的ASCII码值是65而=对应的ASCII码值则是61基于此推测可能存在一种偏移量建议对密文中的每个字符ASCII码减去一个固定的数值如减去4然后再执行一次base64解密处理此外也可以利用 010 编辑器 实现对特定字符批量修改功能以提高操作效率

也可以得到
a2V5ezY4NzQzMDAwNjUwMTczMjMwZTRhNThlZTE1M2M2OGU4fQ==

遍历密文字符串中的每一个字符,
逐一查看密文字符串中的每一个具体字符,
将每个具体字符对应的ASCII码值,
计算出其减去四后的数值,
然后将其转换为新的ASCII编码,
将这些新生成的具体编码依次连接起来得到解密后的Base64字符串,
接着对得到的新Base64数据进行解密。
其中使用的数字四相当于应用凯撒密码时所采用的移位数值。

base64编码之后做偏移加密,凯撒密码的base64形式。

结果:key{68743000650173230e4a58ee153c68e8}

题目二:恺撒密码
Fhfpgs{3r811r068s5pr27ro4op1p37723q7rr2}
解题思路:

恺撒密码:它的偏移量最多就是25。请通过穷举找到 Susctf{XXX} 的字符串

答案

函数用于解密文本:def unlock(text): 对文本中的每个字符进行处理:for i in text: 如果字符的ASCII码在大写字母范围内并满足特定偏移量:if 65 + key <= ord(text) < 92 或者在小写字母范围内并满足特定偏移量:elif 97 + key <= ord(text) < 123,则将该字符转换为其对应的明文字母:text = chr(ord(text)-key);否则如果字符属于大写字母范围但不在指定偏移区间内:elif 65 <= ord(text) < (65+key),或者属于小写字母范围但不在指定偏移区间内:elif (97+key)<=ord(text)<123,则将该字符转换为其对应的明文字母加上一个循环偏移量:text=chr(ord(text)-key+26);否则维持原有字符不变:else:text=text;最后返回解密后的文本内容:return text

text = 'Fhfpgs{3r811r068s5pr27ro4op1p37723q7rr2}'
plaintext = ""
遍历从1到26的整数
对于每个解密后的字符进行处理
将处理后的结果追加到plaintext中
打印当前第%db次尝试的结果:%s
plaintext = ""

输出结果

第1把钥匙的结果是Egeofr{3q811q068r5oq27qn4no1o37723p7qq2}
第2把钥匙的结果是Dfdneq{3p811p068q5np27pm4mn1n37723o7pp2}
第3把钥匙的结果是Cecmdp{3o811o068p5mo27ol4lm1m37723n7oo2}
第4把钥匙的结果是Bdblco{3n811n068o5ln27nk4kl1l37723m7nn2}
第5把钥匙的结果是Acakbn{3m811m068n5km27mj4jk1k37723l7mm2}
第6把钥匙的结果是Zbzjam{3l811l068m5jl27li4ij1j37723k7ll2}
第7把钥匙的结果是Yayizl{3k811k068l5ik27kh4hi1i37723j7kk2}
第8把钥匙的结果是Xzxhyk{3j811j068k5hj27jg4gh1h37723i7jj2}
第9把钥匙的结果是Wywgxj{3i811i068j5gi27if4fg1g37723h7ii2}
第10把钥匙的结果是Vxvfwi{3h811h068i5fh27he4ef1f37723g7hh2}
第11把钥匙的结果是Uwuevh{3g811g068h5eg27gd4de1e37723f7gg2}
第12把钥匙的结果是Tvtdug{3f811f068g5df27fc4cd1d37723e7ff2}
第13把钥匙的结果是Susctf{3e811e068f5ce27eb4bc1c37723d7ee2}
第14把钥匙的结果是Rtrbse{3d811d068e5bd27da4ab1b37723c7dd2}
第15把钥匙的结果是Qsqard{3c811c068d5ac27cz4za1a37723b7cc2}
第16把钥匙的结果是Prpzqc{3b811b068c5zb27by4yz1z37723a7bb2}
第17把钥匙的结果是Oqoypb{3a811a068b5ya27ax4xy1y37723z7aa2}
第18把钥匙的结果是Npnxoa{3z811z068a5xz27zw4wx1x37723y7zz2}
第19把钥匙的结果是Momwnz{3y811y068z5wy27yv4vw1w37723x7yy2}
第20把钥匙的结果是Lnlvmy{3x811x068y5vx27xu4uv1v37723w7xx2}
第21把钥匙的结果是Kmkulx{3w811w068x5uw27wt4tu1u37723v7ww2}
第22把钥匙的结果是Jljtkw{3v811v068w5tv27vs4st1t37723u7vv2}
第23把钥匙的结果是Ikisjv{3u811u068v5su27ur4rs1s37723t7uu2}
第24把钥匙的结果是Hjhriu{3t811t068u5rt27tq4qr1r37723s7tt2}
第25把钥匙的结果是Gigqht{3s811s068t5qs27sp4pq1q37723r7ss2}
第26把钥匙的结果是Fhfpgs{3r811r068s5pr27ro4op1p37723q7rr2}
最后找到,第13把钥匙的结果是

Susctf{3e811e068f5ce27eb4bc1c37723d7ee2}

题目三:摩斯密码
..-./.-../.-/--./----.--/-../...--/..-./-.-./-.../..-./.----/--.../..-./----./...--/----./----./...../-----/....-/-----.-
https://www.bejson.com/enc/morse/可以得到

FLAG%u7bD3FCBF17F9399504%u7d
FLAG{D3FCBF17F9399504}

然后转小写

flag{d3fcbf17f9399504}

题目给了描述:一只小羊翻过了2个栅栏

fa{fe13f590lg6d46d0d0}

加密过程定义如下:
定义一个名为encrypt_fence的函数,
该函数接收两个参数string和key,
其中key未被实际使用。
初始化一个空字符串变量ciphertext。
创建一个临时列表变量temp用于存储中间结果。
循环执行key次,
每次操作中初始化一个空字符串至临时列表。
遍历输入字符串中的每个字符及其索引,
按索引对key取模的结果将字符附加至相应位置的临时字符串。
最终将所有中间结果拼接生成最终密文,
并返回该密文值。

该函数名为decrypt_fence(解密维吉尼亚密码),其输入包括一段密文string以及一个整数key(密钥)。该算法通过以下步骤实现解密:首先计算出明文字母表中字符的数量length等于输入字符串string的长度;接着计算出最小行数min_row等于length除以key的结果向下取整;余数max_num则等于length除以key的结果向上取整;随后创建一个空列表temp用于存储中间结果;初始化索引变量index为0;遍历从0到key-1的所有索引值i:如果当前索引i小于余数max_num,则在索引位置处截取长度为min_row+1的子串并添加至temp列表中;否则截取长度为min_row的子串并添加至temp列表中;每一次循环后均会更新索引变量index;最后遍历所有明文字母的位置i,在相应位置处拼接temp列表中的相应字符到解密后的明文plaintext中;最终返回解密后的明文字符串

execute the decode function to verify the result
# test the encryption function
encrypt_fence("flag{6fde4163df05d900}", 2) should equal 'fa{fe13f590lg6d46d0d0}'
the outcome is flag{6fde4163df05d90}

传统知识+古典密码
题目描述:

1小明收到一封密信,在信中他记录了几个不同的年份。
2 辛卯、癸巳、丙戌、辛未、庚辰、癸酉、己卯及癸巳等是一些不同年代的年号。
3 该密信背面写着“+甲子”字样。
4 key值为CTF{XXX}。
5 采用天干地支纪年法来推算其中的时间线索。

列出题目中提供的组合对应的数字编码

28 30 23 8 17 10 16 30
加上一个甲子(60)

88 90 93 68 77 70 76 90

将字符编码为ASCII制:
XZSDMFLZ
栅栏密码(两列):
XMZFSLDZ
凯撒密码:
SHUANGYU
最后按照指定格式输入CTF{SHUANGYU}并提交

全部评论 (0)

还没有任何评论哟~