赞
踩

题目让你低头,意思是让你看键盘。在键盘上比划每一组,圈起来的就是每一组代表的字符,由此可以得到解密压缩包的密码:circle
解开后得到密文:

接下来找密钥。根据题目ACTF,猜测接出来的flag应该是‘ACTF开头’,对于维吉尼亚表格可以找到密钥:spsp或者sp
利用在线网站解出:

去提交确实错的,看了大佬们的wp后知道buuctf给的密文有问题,正确的密文应该是:
SRLU{OWSI_S_RDPKHARSA_NXYTFTJT}

换成小写后提交正确。

不知道用的什么语言,但大致能看懂过程:前三个for循环用来构造s、t两个数组,到了第四个for才用到了flag与s数组异或得到密文,所以只要按照它的顺序来,用python来复原构造过程。
- with open("C:\\Users\\lenovo\\Desktop\\file.txt", 'rb') as f:
- flag = f.read().hex()
-
- flagx = [int(str(flag)[i:i+2], 16) for i in range(0, len(flag), 2)]
-
- s = []
- for i in range(0,256):
- s.append(i)
-
- t = []
- key = 'whoami'
- for i in range(0,256):
- t.append(key[i%(len(key))])
-
- j = 0
- for i in range(0,256):
- j = (j+s[i]+int(ord(t[i])))%256
- s[i],s[j] = s[j],s[i]
-
-
- i = j = x = 0
- for m in range(0,38):
- i = (i + 1)%256
- j = (j + s[i])%256
- s[i],s[j] = s[j],s[i]
- x = (s[i] + (s[j]%256))%256
- flagx[m] = flagx[m]^s[x]
-
- print(''.join(chr(flagx[i]) for i in range(0, 38)))


希尔加密?没见过,学习一波:
加密过程:
密文矩阵 = 密钥矩阵 * 明文矩阵
给密钥矩阵:
(必须是可逆的)
1、首先将明文串转化成数字(a-0,b-1,c-2,以此类推),如给你明文串EastChinaNormalUniversity,则转化后得到:4 0 18 19 2 7 8 13 0 13 14 17 12 0 11 20 13 8 21 4 17 18 8 19 24,两两一组写成矩阵形式:
少了个数,补0
2、加密:
3、对应转成字母:IK BX NB DH NN JD YE SR OB KB UJ HL W
- s='wznqcaduqopfkqnwofDbzgeu'
- flag_pre='utflag'
- def getit(a1,b1,c1,a2,b2,c2,a3,b3,c3):
- for i in range(26):
- for j in range(26):
- if (a1 * i + b1 * j) % 26 == c1 and (a2 * i + b2 * j) % 26 == c2 and (a3 * i+b3*j) % 26 == c3:
- return (i,j)
- x1=getit(22,25,20,13,16,5,2,0,0)
- x2=getit(22,25,19,13,16,11,2,0,6)
- import string
- flag=''
- for i in range(0, len(s),2):
- flag+=string.ascii_letters[(x1[0]*string.ascii_letters.index(s[i])+x1[1]*string.ascii_letters.index(s[i+1]))%26]
- flag+=string.ascii_letters[(x2[0]*string.ascii_letters.index(s[i])+x2[1]*string.ascii_letters.index(s[i+1]))%26]
- print(flag)
得到:
加上初始的数字,以及改正大小写得flag:utflag{d4nger0us_c1pherText_qq}

给了一行很想摩斯密码的东西,但没有分隔,而且长度不一,题目也说NO SOS(SOS代表用摩斯求救),看了wp才知道是培根,长度统一:
- c = '..-.-.-.–…….–..-…-..-…–.-.-….-..-..–.-.-..-.-..—-'.replace('…', '...').replace('—', '---').replace('–', '--')
-
- print(c.replace('.', 'a').replace('-', 'b'))
- print(c.replace('.', 'b').replace('-', 'a'))

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。