A_Small_Secret
题目压缩包中有个提示和另一个压缩包On_Zen_with_Buddhism.zip,提示内容如下:- 除了base64还有什么编码 MFZWIYLEMFSA====
复制代码
asdadad作为解压密码可以解开压缩包,里面有个txt文件,打开txt可以比较明显的看到PK文件头,进一步确认可以看出是一个word文件,把flag.txt文件后缀改为docx。
用word打开后选中所有文字的颜色修改一下即可看到关键信息:
flag{U2FsdGVkX1/nVMt/cXalqwb8VpS2mDk9UkTaHRPPq5TAtH8XxYVAwxtoDKe/yTN4 zBas0WHmW50e2QwglywbKyCRNsVxaKsbwwdDlcBEg20=}
将密文部分用AES解密,密码就是压缩包的解压密码asdadad,
 - ZmxhZ3tjMmEyMzk4YzdmMjlhNTE5MzI3YWUxMzk2YWM2Nzg1NX0=
复制代码 base64解码得到- flag{c2a2398c7f29a519327ae1396ac67855}
复制代码 next-prime
题目如下:- from Crypto.Util.number import *
- from gmpy2 import next_prime, iroot
- from flag import flag
- assert flag[0:4]==b'flag'
- m = bytes_to_long(flag)
- assert size(m)<500
- p = getPrime(512)
- q = next_prime(p)
- n = p * q
- print('n=', n>>520)
- e = 0x10001
- c = pow(m, e, n)
- print('c=', c)
- '''
- n= 28576274811010794362153160897556935178530640825011441539841241257190782139295561904323347128956873569754645071205043238985141474388531008367238218822591
- c= 49502875285578675438052554215266678403659290915102322948363030271494959804587081871467110614683972929037615883922743651431683465100061968204901334627149795829429950385848753728500177164800064208215503246868631076011505268371936586645321659884527055007299822625570713613996139223348709621258028349513737798120
- '''
复制代码 n的后520位被抹掉了,注意到p ,q很接近,并且n的低位对开方的影响比较小并且p,q都是质数,因此我们可以尝试爆破符合条件的p和q
再利用size(m) |