BUUCTF在线评测 (buuoj.cn)

附件

from Crypto.Util.number import *
from flag import flagdef nextPrime(n):n += 2 if n & 1 else 1while not isPrime(n):n += 2return np = getPrime(1024)
q = nextPrime(p)
n = p * q
e = 0x10001
d = inverse(e, (p-1) * (q-1))
c = pow(bytes_to_long(flag.encode()), e, n)# d = 19275778946037899718035455438175509175723911466127462154506916564101519923603308900331427601983476886255849200332374081996442976307058597390881168155862238533018621944733299208108185814179466844504468163200369996564265921022888670062554504758512453217434777820468049494313818291727050400752551716550403647148197148884408264686846693842118387217753516963449753809860354047619256787869400297858568139700396567519469825398575103885487624463424429913017729585620877168171603444111464692841379661112075123399343270610272287865200880398193573260848268633461983435015031227070217852728240847398084414687146397303110709214913
# c = 5382723168073828110696168558294206681757991149022777821127563301413483223874527233300721180839298617076705685041174247415826157096583055069337393987892262764211225227035880754417457056723909135525244957935906902665679777101130111392780237502928656225705262431431953003520093932924375902111280077255205118217436744112064069429678632923259898627997145803892753989255615273140300021040654505901442787810653626524305706316663169341797205752938755590056568986738227803487467274114398257187962140796551136220532809687606867385639367743705527511680719955380746377631156468689844150878381460560990755652899449340045313521804

分析

根据代码可以得到e、d、c,根据e、c可以算出n

有 c d e 我们知道ed %([p-1)(q-1)]= 1 则ed-1 = k* (p-1)*(q-1)

取k的范围 ed - 1是2063到2064位 、(p-1)(q-1)是1024+1024位 则k取215~216

import gmpy2
import Crypto.Util.number
import sympy
d = 19275778946037899718035455438175509175723911466127462154506916564101519923603308900331427601983476886255849200332374081996442976307058597390881168155862238533018621944733299208108185814179466844504468163200369996564265921022888670062554504758512453217434777820468049494313818291727050400752551716550403647148197148884408264686846693842118387217753516963449753809860354047619256787869400297858568139700396567519469825398575103885487624463424429913017729585620877168171603444111464692841379661112075123399343270610272287865200880398193573260848268633461983435015031227070217852728240847398084414687146397303110709214913
c = 5382723168073828110696168558294206681757991149022777821127563301413483223874527233300721180839298617076705685041174247415826157096583055069337393987892262764211225227035880754417457056723909135525244957935906902665679777101130111392780237502928656225705262431431953003520093932924375902111280077255205118217436744112064069429678632923259898627997145803892753989255615273140300021040654505901442787810653626524305706316663169341797205752938755590056568986738227803487467274114398257187962140796551136220532809687606867385639367743705527511680719955380746377631156468689844150878381460560990755652899449340045313521804
e = 0x10001
for i in range(1000,3000):if e*d-1 > 2**i and e*d-1<2**(i+1):print(i)break
for k in range(2**15,2**16):if (e*d-1) % k==0:p = sympy.prevprime(gmpy2.iroot((e*d-1)//k,2)[0])  q = gmpy2.next_prime(p)if (e*d-1)//k == (q-1)*(p-1):break
n = q * p
m = pow(c ,d ,n )
print(Crypto.Util.number.long_to_bytes(m))

BUUCTF·[NCTF2019]babyRSA·wp相关推荐

  1. BUUCTF·[MRCTF2020]babyRSA·WP

    BUUCTF在线评测 (buuoj.cn) 附件 import sympy import random from gmpy2 import gcd, invert from Crypto.Util.n ...

  2. buu [NCTF2019]babyRSA 1

    buu [NCTF2019]babyRSA 1 题目描述: 题目分析: 首先明确两个公式: e*d = 1 mod (p-1)(q-1) ed1 = e*d - 1 = k(p-1)(q-1) 想要解 ...

  3. BUUCTF Crypto [GUET-CTF2019]BabyRSA wp

    这题RSA非常简单,给出了p+q和(p+1)*(q+1)的值,通过简单的拼凑就可以得到n和欧拉函数phin的值,直接求得flag出来,脚本如下 // python2 import gmpy2 a =0 ...

  4. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  5. BUUCTF·[AFCTF2018]Vigenère·WP

    BUUCTF在线评测 (buuoj.cn) 附件 Yzyj ia zqm Cbatky kf uavin rbgfno ig hnkozku fyyefyjzy sut gha pruyte gu f ...

  6. BUUCTF [NCTF2019]childRSA(费马小定理)

    [NCTF2019]childRSA(费马小定理) 题目 from random import choice from Crypto.Util.number import isPrime, sieve ...

  7. [NCTF2019]babyRSA

    这道题虽然说是babyrsa,并不难,但是还是学了不少东西,理解更深了一步 之前一直不知道rsa中n是1024位还是2048位这个位到底指的是什么,也没有用到过,已知模棱两可,知道今天可算是知道了 f ...

  8. buu [NCTF2019]babyRSA

    题目; from Crypto.Util.number import * from flag import flagdef nextPrime(n):n += 2 if n & 1 else ...

  9. qsnctf babyrsa wp

    下载附件 给了p+q,e,d,c,(p+1)(q+1) 我们可以通过(p+1)(q+1)-p*q-1求出N 得出 N=57781903220726608495841176404144399752917 ...

最新文章

  1. Git Fetch vs Pull:Git Fetch和Git Pull命令之间有什么区别?
  2. ARM7与ARM9的区别
  3. Mysql HA实现MYSQL的高可用(上)
  4. H.264软件解码器在PXA270平台上的优化
  5. ARM七种异常源和异常处理流程(四大步三小步)
  6. ElementUI Button按钮样式
  7. 【5】天猫精灵开放平台实验—基于天气查询模板创建开发屏显页面技能
  8. FigDraw 11. SCI 文章绘图之小提琴图 (ViolinPlot)
  9. 吉林省注册公司流程:第一步 企业名称预先核准流程。
  10. 切换页面导致计时器停止,JS暂停!
  11. 什么是SEO网站快速排名?
  12. crh寄存器_STM32的CRH、CRL、ODR和IDR寄存器的使用总结
  13. 手机闪存速度排行_有关手机闪存类型的一些知识
  14. python qrcode 二维码中间贴图彩色
  15. 基于北斗RDSS短报文的海洋浮标在线水质/气象综合监测系统
  16. 局域网内抢网速_为什么4G的网速越来越慢?
  17. 微信小程序(第二十四章)- 数据交互前置
  18. mysql not exists 用法_mysql 子查询 exists 和 not exists使用方法和实例
  19. 照相制版技术与图形转移技术
  20. 『福利』免费领取官方提供的Atlas云托管MongoDB

热门文章

  1. 【论文阅读记录】基于视觉SLAM建图的无人机路径规划 作者:王海
  2. 永中office之在线编辑(java版)
  3. 我的世界java版怎么tp坐标_我的世界tp指令坐标
  4. Pi主网功能上线,等待起飞
  5. 创新线上带货运营,佛山环球港助力“88购物狂欢节”
  6. 让chatGPT使用Tensor flow Keras组装Bert,GPT,Transformer
  7. 网红、科技大佬、作家,跨界喜剧王罗永浩才是打造个人IP的典范
  8. Matlab:线条动画
  9. 初学c语言中的一些常见代码
  10. excel删除无尽空白行_Excel数据联动word整理技巧,双向复制粘贴,快捷转换