2023华为杯·第二届中国研究生网络安全创新大赛初赛复盘 Writeup ...

打印 上一主题 下一主题

主题 914|帖子 914|积分 2742

A_Small_Secret

题目压缩包中有个提示和另一个压缩包On_Zen_with_Buddhism.zip,提示内容如下:
  1. 除了base64还有什么编码 MFZWIYLEMFSA====
复制代码

asdadad作为解压密码可以解开压缩包,里面有个txt文件,打开txt可以比较明显的看到PK文件头,进一步确认可以看出是一个word文件,把flag.txt文件后缀改为docx。
用word打开后选中所有文字的颜色修改一下即可看到关键信息:
flag{U2FsdGVkX1/nVMt/cXalqwb8VpS2mDk9UkTaHRPPq5TAtH8XxYVAwxtoDKe/yTN4 zBas0WHmW50e2QwglywbKyCRNsVxaKsbwwdDlcBEg20=}
将密文部分用AES解密,密码就是压缩包的解压密码asdadad,
  1. ZmxhZ3tjMmEyMzk4YzdmMjlhNTE5MzI3YWUxMzk2YWM2Nzg1NX0=
复制代码
base64解码得到
  1. flag{c2a2398c7f29a519327ae1396ac67855}
复制代码
next-prime

题目如下:
  1. from Crypto.Util.number import *
  2. from gmpy2 import next_prime, iroot
  3. from flag import flag
  4. assert flag[0:4]==b'flag'
  5. m = bytes_to_long(flag)
  6. assert size(m)<500
  7. p = getPrime(512)
  8. q = next_prime(p)
  9. n = p * q
  10. print('n=', n>>520)
  11. e = 0x10001
  12. c = pow(m, e, n)
  13. print('c=', c)
  14. '''
  15. n= 28576274811010794362153160897556935178530640825011441539841241257190782139295561904323347128956873569754645071205043238985141474388531008367238218822591
  16. c= 49502875285578675438052554215266678403659290915102322948363030271494959804587081871467110614683972929037615883922743651431683465100061968204901334627149795829429950385848753728500177164800064208215503246868631076011505268371936586645321659884527055007299822625570713613996139223348709621258028349513737798120
  17. '''
复制代码
n的后520位被抹掉了,注意到p ,q很接近,并且n的低位对开方的影响比较小并且p,q都是质数,因此我们可以尝试爆破符合条件的p和q

再利用size(m)
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表