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