原创
: [GUET-CTF2019]虚假的压缩包 1 得到的 flag 请包上 flag{} 提交。
[GUET-CTF2019]虚假的压缩包 1 得到的 flag 请包上 flag{} 提交。
拿到压缩包
里面还有俩。
这个压缩软件就很神奇。
如果用360压缩,这个虚假的压缩包就可以直接打开。
但是用winrar ,就会显示加密。这个加密实际上就是一个zip伪加密,也是简单的。
可能是360压缩把一些错误信息给过滤掉了。像是一些文件头错误,360压缩是直接不给显示错误文件的。但是其它的解压软件是显示但打不开。
这是虚假的压缩包里面的内容。看着像是某个加密算法。估计是RSA。
1 2 3 4 5 6 7 8
| 数学题 n = 33 e = 3 解26
------------------------- 答案是
|
这个整数的数量级很小,直接就可以算出来。也不乐意去求p,q了。
1 2 3 4 5 6 7 8 9
| c=26 n=33 e=3
c=pow(m,e,n)
m=5
|
那么解压密码就是”答案是5“
调整图像的大小
和谁做^5操作呢。
这个就很像。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import base64
f1 = open('C:\\Users\\brighten\\Desktop\\亦真亦假','r') xor_data = f1.read() f1.close() dec_data = "" for i in xor_data: tmp = int(i,16) ^ 5 dec_data += hex(tmp)[2:]
print(dec_data) f2 = open('./data.txt','wb') f2.write(base64.b16decode(dec_data.upper())) f2.close()
|
出现了乱码
但是这个PK很可以。
保存到zip格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import base64
f1 = open('C:\\Users\\brighten\\Desktop\\亦真亦假','r') xor_data = f1.read() f1.close() dec_data = "" for i in xor_data: tmp = int(i,16) ^ 5 dec_data += hex(tmp)[2:]
print(dec_data) f2 = open('./data.zip','wb') f2.write(base64.b16decode(dec_data.upper())) f2.close()
|
这个又是word的感觉吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import base64
f1 = open('C:\\Users\\brighten\\Desktop\\亦真亦假','r') xor_data = f1.read() f1.close() dec_data = "" for i in xor_data: tmp = int(i,16) ^ 5 dec_data += hex(tmp)[2:]
print(dec_data) f2 = open('./data.dox','wb') f2.write(base64.b16decode(dec_data.upper())) f2.close()
|
哈哈哈哈,要不是我设置了护眼模式还真的被骗过去了。太坏了。
做出来的结果如图。
思考:
打开一系列的WPS系列的文件,发现这些全部都是PK头的。
那么这些全部都是zip文件呀。好神奇呀。