from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from secret import flagkey = RSA.generate(1024)
open("flag.enc",'wb').write(PKCS1_OAEP.new(key.publickey()).encrypt(flag))
open('priv.pem','wb').write(key.exportKey('PEM'))

根据priv.pem可以提出n、e、dq的低120位和u
已知n、e、dq可以构造如下方程:
d q = d % ( q − 1 ) ( m o d 2 120 ) dq=d\%(q-1)~(mod~2^{120}) dq=d%(q−1) (mod 2120)
可以得到   d q < q − 1 dq<q-1 dq<q−1
e d q = 1 % ( q − 1 ) ( m o d 2 120 ) e d q = k ( q − 1 ) + 1 ( m o d 2 120 ) edq=1\%(q-1)~(mod~2^{120})\newline edq=k(q-1)+1~(mod~2^{120}) edq=1%(q−1) (mod 2120)edq=k(q−1)+1 (mod 2120)
因为   d q < q − 1 dq<q-1 dq<q−1,所以  e > k e>k e>k.
e d q + k − 1 = k q ( m o d 2 120 ) edq+k-1=kq~(mod~2^{120})\newline edq+k−1=kq (mod 2120)
所以,我们把左边的式子乘上k的模逆就得到了q的低120位
( e d q + k − 1 ) ∗ i n v e r t ( k , 2 120 ) = q ( m o d 2 120 ) (edq+k-1)*invert(k,2^{120})=q~(mod~2^{120}) (edq+k−1)∗invert(k,2120)=q (mod 2120)
对于不同的k得到的q的低位不同,遍历这些k找到所有的  q l o w q_{low} qlow​

我本来的想法是利用q的低位进行低位攻击,进来恢复q的高位。
但发现q有512位,已知位数还不到一半,是无法恢复q的

于是利用另一个已知量u,也就是  i n v e r t ( q ) m o d p invert(q) mod p invert(q)modp
u = 1 q ( m o d p ) u q = 1 ( m o d p ) u q q = q ( m o d p ) u q q − q = k p u=\frac{1}{q}~(mod~p)\newline uq=1~(mod~p)\newline uqq=q~(mod~p)\newline uqq-q=kp\newline u=q1​ (mod p)uq=1 (mod p)uqq=q (mod p)uqq−q=kp
可以用coppersmith的原理直接求解q

from Crypto.Util.number import *
import gmpy2
from tqdm import tqdm
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEPn = 0xd7152506aa9cec05e5335d6b46f5491407c3199fd51091f1f6030d3762b9e03f49c9dcdc075054e0cc148b974b41854bd93b4ee16a2a876ee62005e80ef806b7aa3b64b1bf9b1fa773e353d0cdb9ff9783ddd5f5e67499ad10f361e938d00b82a6a4c42a0535c5e76721798e86b45cd4b8d03b0d7e75c2be8766a1e843bdc641
e = 0x10001
u= 0xe3016cb3609c1d643c167439c3b938b881f4237f24860d3b1cb85a626d5ccd4726964e0f8270d6c4df9ebfebcc538e4ee5e1a7b7368ede51ec6ae917f78eb598
dq_low = 0xc90bcecf1cbab3358585e8a041d1b1
c = 96458723724899437870554342796876171017896652413964521193266438981853945238446913579867464909353925601873532290626111170073532116639383463734148270579305067733147411306325252107181823453497914478588342362177625026365513002442585949837516090367171824895036711246039928723021679235071368954348296729327873680822q_lows=[]
for k in range(1,e):try:tmp=gmpy2.invert(k,2**120)*(e*dq_low+k-1)%2**120q_lows.append(int(tmp))except:continuePR.<x> = Zmod(n)[]
for q_low in tqdm(q_lows):f=u*(2^120*x+q_low)^2-(2^120*x+q_low)f=f.monic()x0=f.small_roots(X=2^(512-120+1))if x0:#print(x0)q=2**120*int(x0[0])+q_low#这里注意一下x0[0]要改成int,不然会把q也定义在有限域n内,下一行会报错p=n//qd=inverse(e,(p-1)*(q-1))rsa=RSA.construct((int(n),int(e),int(d),int(p),int(q)))c=long_to_bytes(c)print(PKCS1_OAEP.new(rsa).decrypt(c))break

当时看起来就不是特别复杂,看了wp之后发现确实只是一些数学变换,这个题怎么就才3个解呢?(虽然我也没有做出来

BlueHat 2022 corrupted_key相关推荐

  1. 2022 SDC | 第六届安全开发者峰会于上海圆满落幕!

    2022年10月23日,以"共建安全新生态"为主题,看雪第六届安全开发者峰会于上海成功举办!聚焦数字化升级时代下网络安全的新技术.新发展,看雪与各位技术人员,一同探索新安全路线,共 ...

  2. 2022年新能源汽车产业集群百人会

    2022年新能源汽车产业集群百人会   3月25日-3月27日,2022年第八届中国电动汽车百人会(以下简称百人会)在线上举办.本届论坛以"迎接新能源汽车市场化发展新阶段"为主题. ...

  3. 2022年AI芯片场景

    2022年AI芯片场景 随着技术成熟化,AI芯片的应用场景除了在云端及大数据中心,也会随着算力逐渐向边缘端移动,部署于智能家居.智能制造.智慧金融等领 域:同时还将随着智能产品种类日渐丰富,部署于智能 ...

  4. 回顾2021,展望2022

    2021,这一年最大的收获是孕育了一个聪明漂亮机灵的小家伙.这一年我虚岁28岁,和爱的人有了爱的结晶.东哥各方面都挺好的,我们都不是圣人,都是能力有限的普通人,但他在尽其所能的对我好.我不是万能的人, ...

  5. Maya 2022中的硬表面建模技术学习视频教程

    Maya 2022中的硬表面建模 信息: 使用正确的拓扑和边流在Maya中建模硬曲面对象. 你会学到什么 硬质表面工具和技术 细分工作流程 边缘流动控制 正确拓扑 材料设置 Studio Lightn ...

  6. MAYA 2022基础入门学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.41 GB |时长:4.5小时 包含 ...

  7. PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022

    PBR游戏3D模型捆绑包2022年2月 大小解压后:6.99G MAX| OBJ | FBX |TEX  模型获取:PBR游戏3D模型合集包 PBR Game 3D-Models Bundle Feb ...

  8. 2022,人工智能开启未来新密码

    作者 | 剑客阿良_ALiang(胡逸) 出品 | AI科技大本营(ID:rgznai100) 购买大型电器.汽车,你是否会询问有没有智能语音功能?是的,潜移默化中人们已经不再将人工智能当作魔术,而是 ...

  9. 《2022产业互联网安全十大趋势》发布,专家学者透析产业安全新变化

    2月28日,在中国产业互联网发展联盟指导下,人民邮电报.中国信息安全.腾讯安全联合实验室.腾讯研究院联合推出<2022产业互联网安全十大趋势>.该报告由<中国信息安全>杂志出品 ...

最新文章

  1. 成为“能打”的二次元游戏《明日方舟》做对了什么?
  2. 上下定高 中间自适应_ADAS|驾驶辅助系统之自适应灯光照明系统
  3. 洛谷P2347 砝码称重 某一年noip提高组原题
  4. Linux初步(一)——关于操作系统的启动
  5. 【JavaScript】重温Javascript继承机制
  6. android引用X5内核webview部分问题记录
  7. Mongodb(芒果DB)之服务搭建
  8. 基于51单片机的交通灯设计
  9. JAVA 通过POI实现Excel从单元格选择下拉选项
  10. Docker存储配置切换loop-lvm到direct-lvm
  11. 机顶盒安装APK应用的方法
  12. 获取今日头条街拍图片
  13. 获取当前月份的最后一天
  14. 360搜索推出致敬女性专题 董卿咪蒙领衔十大杰出女性
  15. python的pyside2安装
  16. 使用Nginx负载均衡及动静分离
  17. Circling Round Treasures(codeforces 375c)
  18. Raspberry Pi家庭监控报警系统——软件篇
  19. #发现你#桃子还是苹果——沉锚效应
  20. html阅读是什么,阅读.html

热门文章

  1. 转载和积累系列 - Linux tcpdump命令详解
  2. Halcon—3D测量算法的那点数学公式和代码实现
  3. 简历撰写——Java与.NET(当年毕业生版本)
  4. GitHub 搜索工具
  5. 探索计算机的秘密硬件教案,《电脑的秘密》教案教学设计
  6. sql语句中查重复数据
  7. 3秒爬取百度图片网站,批量下载各种图片
  8. 创建第一个属于自己的canvas小游戏(基础知识)
  9. dce和tree shaking
  10. 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。