BUUCTF:[GUET-CTF2019]虚假的压缩包

题目来源:https://buuoj.cn/challenges#[GUET-CTF2019]%E8%99%9A%E5%81%87%E7%9A%84%E5%8E%8B%E7%BC%A9%E5%8C%85

得到两个zip

010editor打开分别分析一下

其中真实的压缩包是真加密的

虚假的压缩包是伪加密 修改标识符

打开得到

 rsa算法

贴个脚本

import gmpy2
"""
gmpy2.mpz(n)#初始化一个大整数
gmpy2.mpfr(x)# 初始化一个高精度浮点数x
d = gmpy2.invert(e,n) # 求逆元,de = 1 mod n
C = gmpy2.powmod(M,e,n)# 幂取模,结果是 C = (M^e) mod n
gmpy2.is_prime(n) #素性检测
gmpy2.gcd(a,b)  #欧几里得算法,最大公约数
gmpy2.gcdext(a,b)  #扩展欧几里得算法
gmpy2.iroot(x,n) #x开n次根
"""
p = gmpy2.mpz(3)
q = gmpy2.mpz(11)
e = gmpy2.mpz(3)
l = (p-1) * (q-1)
d = gmpy2.invert(e,l)
c = gmpy2.mpz(26)
n = p * q
ans = pow(c,d,n)
print(ans)
来源:https://blog.csdn.net/qq_24033605/article/details/117158714

得到

所以解压密码是:答案是5

解压完得到两个文件

jpg的高不对 修改后得到提示:异或5

贴个脚本

f1 = open('文件名','r')
data = f1.read()
f1.close()
flag_data = ""
for i in data:
    tmp = int(i,16) ^ 5
    flag_data += hex(tmp)[2:]
f2 = open('./flag.doc','wb')
f2.write(flag_data.decode('hex'))
f2.close()

文件名最好改为英文的

flag跟在文章末尾,调成深色字体即可

参考:https://blog.csdn.net/qq_24033605/article/details/117158714
posted @ 2022-01-26 22:05  B0mbax  阅读(533)  评论(2编辑  收藏  举报