引言

出人意料的得到消息要被拉去打国赛(第十四届全国大学生信息安全竞赛-创新实践能力赛)了(一脸懵逼)
我还什么都没学呢(摸鱼)
嘛,不过被分到第二梯队大概也没抱什么希望吧(继续摸鱼)
害,说丧气话也改变不了什么,还是脚踏实地地慢慢进步吧
毕竟 Crypto手 在队里也是稀缺人才
我也是加把劲骑士!(doge)

RSA2

dp(dq) 泄露的题没做过,不过跟 dp, dq 泄露相比容易许多
首先,根据
dp≡dmod(p−1)dp \equiv d\space mod \space (p-1) dp≡d mod (p−1)
联想到
φ=(p−1)∗(q−1)\varphi = (p-1) * (q-1) φ=(p−1)∗(q−1)
那肯定就有人问了,你在 dp,dq 泄露中字母就没联想到 φ 呢?
对比 dp,dq 泄露和 dp(dq) 泄露的已知条件:前者已知 p,q,(n),(φ),dp,dq,cp, q, (n), (φ), dp, dq, cp,q,(n),(φ),dp,dq,c ;而后者已知 e,n,dp(dq),ce, n, dp(dq), ce,n,dp(dq),c
我们的目的是解出私钥 ddd ,或者 直接解出 cdc^{d}cd ,通过 m≡cdmodnm \equiv c^{d} \space mod \space nm≡cd mod n 来解出密文 mmm
而 RSA 加密算法中有很重要的一步
e∗d≡1modφe * d \equiv 1 \space mod \space \varphi e∗d≡1 mod φ
dp(dq) 泄露问题中已知 eee ,所以可以根据此式解出私钥 ddd
而 dp,dq 泄露问题中 eee 未知,于是采取解出 cdc^{d}cd 整体的策略

回到 dp,dq 泄露问题
因为
dp≡dmod(p−1)dp \equiv d\space mod \space (p-1) dp≡d mod (p−1)
所以 ∃k1∈Z,s.t.\exists\space k_{1} \in\mathbb{Z}, \space s.t.∃ k1​∈Z, s.t.
dp=d+k1∗(p−1)dp = d + k_{1} * (p-1) dp=d+k1​∗(p−1)
等式两边同时乘 eee 得
e∗dp=e∗d+k1∗e∗(p−1)(∗)e * dp = e * d + k_{1} * e * (p-1) \qquad \qquad (*) e∗dp=e∗d+k1​∗e∗(p−1)(∗)
因为
e∗d≡1modφe * d \equiv 1 \space mod \space \varphi e∗d≡1 mod φ
所以 ∃k2∈Z,s.t.\exists\space k_{2} \in\mathbb{Z}, \space s.t.∃ k2​∈Z, s.t.
e∗d=1+k2∗φ=1+k2∗(p−1)∗(q−1)e * d = 1 + k_{2} * \varphi = 1 + k_{2} * (p-1) * (q-1) e∗d=1+k2​∗φ=1+k2​∗(p−1)∗(q−1)
将此式中的 e∗de * de∗d 代入 ∗*∗ 式,得
e∗dp=1+k∗(p−1)e * dp = 1+k * (p-1) e∗dp=1+k∗(p−1)
其中 k=(p−1)∗(k1∗e+k2∗(q−1))∈Zk = (p-1) * (k_{1} * e + k_{2} * (q - 1)) \space \in\mathbb{Z}k=(p−1)∗(k1​∗e+k2​∗(q−1)) ∈Z

由 dp≡dmod(p−1)dp \equiv d\space mod \space (p-1)dp≡d mod (p−1) 可知,
dp<(p−1)<pdp < (p-1) < p dp<(p−1)<p

e>ke > k e>k
所以,只要我们使 kkk 遍历 eee 的取值就能求出 ppp ,进而求出 φ\varphiφ ,再对 eee 求关于 φ\varphiφ 的逆元,就能求出私钥 ddd 进行解密
实现代码如下:

from Crypto.Util.number import *e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751for k in range(1, e):p = (e*dp-1) // k +1q = n // pif (n - p*q) == 0:break
print(p, q)
phi = (p-1) * (q-1)
d = inverse(e, phi)
print(d)
m = pow(c, d, n)
print(long_to_bytes(m))

得到 flag{wow_leaking_dp_breaks_rsa?_98924743502}

RSA

打开 pub.key 文件,看到前缀后缀就知道是 SSL 证书格式

用解密网站:http://ctf.ssleye.com/pub_asys.html
得到 n 和 e
尝试用 http://factordb.com/ 网站爆破:

没有结果
emmm…
再用 sagemath 爆破:

花了一点时间
这样,我们得出了 p, q, n, e,然后就可以开始解密。。。
嗯???
密文呢?
解压之后的文件里面还有一个 flag.enc 文件,密文应该就在里面
但是打开文件


一堆乱码是什么鬼?
用 python 读取文件:

with open(r"D:\BUUCTF\Crypto\RSA(1)\0eaf8d6c-3fe5-4549-9e81-94ac42535e7b\flag.enc", "rb") as f:f = f.read()
print(f)

得到一串 bytes :b’A\x96\xc0YJ^\x00\n\x96\xb8x\xb6|\xd7$y[\x13\xa8\xf2\xcaT\xda\x06\xd0\xf1\x9c(\xbeh\x9bb’
bytes_to_long 之后应该就是密文了
解密代码如下:

from Crypto.Util.number import *n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
e = 65537
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463phi = (p-1) * (q-1)
d = inverse(e, phi)
print(d)with open(r"D:\BUUCTF\Crypto\RSA(1)\0eaf8d6c-3fe5-4549-9e81-94ac42535e7b\flag.enc", "rb") as f:f = f.read()
print(f)
c = bytes_to_long(f)
print(c)m = pow(c, d, n)
print(long_to_bytes(m))

这是我参考了大佬的建议自己写的版本
结果如下:

高亮处即为 flag ,但是有一堆 padding

然后是另一个参考了 wp 的版本:

from Crypto.Util.number import *
import rsan = 86934482296048119190666062003494800588905656017203025617216654058378322103517
e = 65537
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463phi = (p-1) * (q-1)
d = inverse(e, phi)
print(d)
key = rsa.PrivateKey(n, e, int(d), p, q)with open(r"D:\BUUCTF\Crypto\RSA(1)\0eaf8d6c-3fe5-4549-9e81-94ac42535e7b\flag.enc", "rb") as f:f = f.read()print(rsa.decrypt(f, key))

结果如下:

属实恶心人

结语

作业肝完了,假期也结束了
感觉什么都没干啊啊啊啊啊啊啊啊
希望能坚持

BUUCTF 每日打卡 2021-4-5相关推荐

  1. BUUCTF 每日打卡 2021-8-18

    引言 之前这段时间一直在打比赛.写文章,没时间更新 关于之前说的关于Wiener's Attack的完整推导,详见我的知乎文章 [InCTF 2021]Gold_digger 加密代码如下: impo ...

  2. BUUCTF 每日打卡 2022-1-16

    引言 填坑 [羊城杯 2020]Power 加密代码如下: from Crypto.Util.number import * import gmpy2 from secret import flagp ...

  3. BUUCTF 每日打卡 2021-5-6

    引言 五一假期全鸽了... 果然当鸽子会上瘾... 假期前一天晚上留了半小时搞这道 RSA & what ,结果搞到凌晨把我心态搞崩了 然后就鸽了... 今天终于搞出来了 RSA & ...

  4. BUUCTF 每日打卡 2021-4-14

    引言 今日无战事 这是base?? 附件内容: dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U' ...

  5. BUUCTF 每日打卡 2021-4-28

    引言 数分考完了 明天蓝帽杯 可怜的RSA 附件给了公钥: -----BEGIN PUBLIC KEY----- MIIBJDANBgkqhkiG9w0BAQEFAAOCAREAMIIBDAKCAQM ...

  6. BUUCTF 每日打卡 2021-7-19

    引言 上午学了4个小时车,只能下午来更了( [NPUCTF2020]认清形势,建立信心 加密代码如下: from Crypto.Util.number import * from gmpy2 impo ...

  7. BUUCTF 每日打卡 2021-4-13

    引言 又是昏昏沉沉的一天 密码学的心声 题目描述如下: 附件内容: 从歌词可知,这是八进制加密,要用 ascii 码解密 尝试把全部内容八进制转十进制解密: from Crypto.Util.numb ...

  8. 电动力学每日一题 2021/10/23 载流板产生的电磁场

    电动力学每日一题 2021/10/23 载流板产生的电磁场 载流板的辐射 载流板的辐射 先验证电荷守恒: ∂ρ∂t=−∇⋅J=−∂∂zJz=0\frac{\partial \rho}{\partial ...

  9. 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场

    电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场 无限长均匀电流 无限长圆柱面均匀电流密度 无限长均匀电流 假设z轴上有一根非常细的电线,携带均匀电流I0I_0I ...

最新文章

  1. 在Spring Boot使用H2内存数据库
  2. mysql 64位 8.0.11_mysql8.0.11 在windows64安装 步骤
  3. linux部分基础命令总结,Linux常用基础命令总结
  4. 关于JAVA中的synchronized,一段不错的解释...
  5. 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】...
  6. mysql死锁,等待资源,事务锁,Lock wait timeout exceeded; try restarting
  7. PHP回顾之多进程编程
  8. Activiti流程定义部署、删除
  9. MonoMac 1.0正式发布
  10. Eclipse离线安装包下载地址
  11. 【转存】游戏中常用术语
  12. quartus频率计 时钟设置_FPGA021 基于QuartusⅡ数字频率计的设计与仿真
  13. 电影周周看——适合新手学习的微信小程序
  14. 微信小程序--订单查询页面
  15. 基于springboot+vue的食疗系统
  16. [Openstack]一键安装Openstack测试环境
  17. MapX和MapXtreme区别
  18. 【Mybatis框架】初识Mybatis
  19. Spring事务管理(应对面试)
  20. Visual Studio 2017 卸载 以及 Visual Studio 2010 安装

热门文章

  1. 替换请求输出文件和日志文件
  2. Json及Jsoncpp开源库的应用
  3. linux monitor 命令,Process Monitor(简称Procmon)发布Linux版,附使用方法
  4. 1、关于douyin 小红书等平台 人均985 211的想法
  5. 爬虫Traceback (most recent call last):异常
  6. android 仿微信视频压缩上传,iOS视频压缩(仿微信录像)
  7. 微信小程序开发之——仿微信视频录制上传
  8. mysql主从配置duxi_DUX主题
  9. LLRB——红黑树的现代实现
  10. vue搜索(不区分大小写)通用