题目如下:

题目分析:

发现常规rsa不存在的dp。查找资料知道 dp ≡ d mod (p - 1)。意识到dp是解题关键,可能dp和n存在某种关系可以解出p或者去,跟之前有一题有点类似,求p和q之间存在的线性关系那题。Rsa之给定n很大求解问题 - nLesxw - 博客园 (cnblogs.com)

存在关系的推导:

dp ≡ d % (p - 1)  可以写成d ≡ dp % (p - 1)   所以存在一个k1 使得 k1 * ( p - 1) + dp = d

因为 ed ≡ 1 mod phi(n) 也可以变换 ed = k2  * phi(n) + 1

所以e * d = e * (k1 * ( p - 1) + dp) ,易得:

k2 * phi(n) + 1 = e * (k1 * ( p - 1) + dp)

又因为 phi(n) = (p - 1) * (q - 1),所以可以得到:

k2 * [(p - 1) * (q - 1)] + 1 = e * (k1 * ( p - 1) + dp)

展开得到:

k2 * (p-1)*(q-1) + 1 = e * k1 * (p-1) + e * dp

整理得到:

e * dp = (p-1) * (k2*(q-1) - e * k1) + 1

设 x = k2 * (q-1) - k1 * e,可以得到:

e * dp = (p - 1) * x + 1

根据dp ≡ d % (p - 1) 我们可以得到 dp < p-1

根据e * dp = (p - 1) * x + 1 估算我们可以得到 x < e

因为e * dp > 0且不等于1,所以x > 1

所以在e * dp = (p - 1) * x + 1  式子中我们知道了e,dp 和x的范围[1,e],,通过爆破x即的p

脚本编写:

from Cryptodome.Util.number import *
import gmpy2 e = 65537
n = 13851998696110232034312408768370264747862778787235362033287301947690834384177869107768578977872169953363148442670412868565346964490724532894099772144625540138618913694240688555684873934424471837897053658485573395777349902581306875149677867098014969597240339327588421766510008083189109825385296069501377605893298996953970043168244444585264894721914216744153344106498382558756181912535774309211692338879110643793628550244212618635476290699881188640645260075209594318725693972840846967120418641315829098807385382509029722923894508557890331485536938749583463709142484622852210528766911899504093351926912519458381934550361
dp = 100611735902103791101540576986246738909129436434351921338402204616138072968334504710528544150282236463859239501881283845616704984276951309172293190252510177093383836388627040387414351112878231476909883325883401542820439430154583554163420769232994455628864269732485342860663552714235811175102557578574454173473
c = 6181444980714386809771037400474840421684417066099228619603249443862056564342775884427843519992558503521271217237572084931179577274213056759651748072521423406391343404390036640425926587772914253834826777952428924120724879097154106281898045222573790203042535146780386650453819006195025203611969467741808115336980555931965932953399428393416196507391201647015490298928857521725626891994892890499900822051002774649242597456942480104711177604984775375394980504583557491508969320498603227402590571065045541654263605281038512927133012338467311855856106905424708532806690350246294477230699496179884682385040569548652234893413 a = e * dp
for i in range(1, e):
p = (a + i - 1) // i
if a == (p - 1) * i + 1:
q = n // p
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))

爆破得到flag

这里代码写的不够好,你也可以加上一些限制条件,直接得到flag。

总结:

dp问题的rsa要找出关系e * dp = (p - 1) * x + 1 [1<x<e]爆破x即得解

CTFshow——funnyrsa3的更多相关文章

  1. ctfshow之Web入门刷题记(从89开始,持续更新)

    0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...

  2. 关于CTFshow中Web入门42-54

    0x00前记 ​ 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...

  3. c通过ctfshow学习php反序列化

    web254 web255 web256 web257 web258 web259 web260 web262 web263 web264 web265 web266 web254 error_rep ...

  4. ctfshow——web_AK赛

    签到_观己 从题目描述中没发现什么有用的信息 发现文件包含 尝试使用PHP伪协议执行命令,发现无法执行 尝试使用远程文件包含,发现也未开启 尝试使用日志注入 记录了UA值,抓包写入一句话木马 使用蚁剑 ...

  5. ctfshow WEB入门 信息收集 1-20

    web1 题目:开发注释未及时删除 查看页面源代码即可 web2 题目:js把鼠标右键和f12屏蔽了 方法一: 禁用JavaScript 方法二: url前面加上view-source: web3 题 ...

  6. ctfshow萌新 web1-7

    ctfshow萌新 web1 1.手动注入.需要绕过函数inval,要求id不能大于999且id=1000,所以用'1000'字符代替数字1000 2.找到?id=" "处有回显 ...

  7. ctfshow web2 web3

    ctfshow web2 1.手动注入题.先用万能密码admin' or 1=1%23,有回显 2.union select注入,2处有回显 3.依次查找数据库.表.字段 得到flag ctfshow ...

  8. ctfshow web入门部分题目 (更新中)

    CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...

  9. CTFshow——funnyrsa1的wp理解

    题目如下: 题目分析: 拿到题,发现给的e不常规,p1和p2相等,有两个不同n,两个不同c和两个不同e.给定两个密文的情况下,通常需要找到两者之间存在的关系,"合并"密文求解才能得 ...

随机推荐

  1. POJ3260 The Fewest Coins(混合背包)

    支付对应的是多重背包问题,找零对应完全背包问题. 难点在于找上限T+maxv*maxv,可以用鸽笼原理证明,实在想不到就开一个尽量大的数组. 1 #include <map> 2 #inc ...

  2. Hyperf 接入阿里云ACM应用配置管理中心

    参考: 阿里云文档:https://help.aliyun.com/document_detail/85466.html?spm=a2c4g.11186623.6.550.43cb42d4Af4Tu0 ...

  3. Linux基础_5_文件管理

    创建 touch 文件名 #创建文件 stat 文件名 #查看文件属性 touch -am 文件名 #更改文件的访问时间及修改时间 删除 rm -rf s/* #递归强制删除s目录下的所有内容(包括文 ...

  4. XAF新手入门 - 类型子系统(Types Info Subsystem)

    类型子系统概述 类型子系统是XAF的核心概念,但我们平时却很少关注它,它集中存储了模块中的类型,它是生成应用程序模型(Application Model)的基础,它与XAF中其它的概念都有所关联,了解 ...

  5. 分清国内版FireFox和国际版FireFox

    FireFox现在成为越来越多人替代Chrome的选择.但与Chrome不同的是,FireFox无论桌面端还是移动端,都有着『国际』和『国内』版本的区分. 二.正确的下载地址 2.1国内版的混淆视听: ...

  6. ES6学习笔记(十四)module的简单使用

    1.前言 module模块机制是es6新引入的,它解决了作用域的问题,使代码更加规范和结构化. 下面简单的使用一下. 2.基本使用 2.1 模块和脚本的区别 模块代码运行在严格模式下,并且没有任何办法 ...

  7. Ubuntu定时执行python脚本

    Crontab命令 命令选项: crontab -l : 显示某个用户的任务计划 crontab -e :编辑某个用户的任务计划 cron服务 service cron start/stop/rest ...

  8. java查询三级树(三级目录)

    背景: 三级树实现效果 这里只介绍,查询数据库,构建三级目录的后端业务逻辑 1.创建查询类(对应数据库需要查出的字段) @Data @AllArgsConstructor @NoArgsConstru ...

  9. hutool包的DateUtil工具类

    [首先引入依赖 ] <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-core& ...

  10. MIT6.828学习笔记1

    Lab 1: Booting a PC Part 1: PC Bootstrap The PC's Physical Address Space 早期的PC机基于Intel的8088处理器,能够寻址1 ...