当前位置: 首页 > news >正文

CTF-RSA-openssl-pem格式的key

CTF-RSA-openssl-pem格式的key

  • 一、上传公钥
  • 二、用openssl读取pem格式的公钥
  • 三、使用python转换模数的进制为十进制
  • 四、尝试解开模数n
  • 五,用rsa-tool计算出私钥的逆模
  • 六、下载了rsatool.py来生成私钥
  • 七、用openssl配合私钥解密
  • 八、总结

题目是一个RSA的pem格式的公钥,最近一次重装没有安装虚拟机,要用到openssl工具才可以看到公钥的内容,要不然也可以用python的cryptography库(这个可能后面会来研究),正在纠结安装vmware然后把之前的kali用上还是下载个win的openssl工具(好像是1.1.1版本的)还是下载一个crgwin模拟Linux环境然后下载openssl(3.5版本的),结果突然想到本地还有个服务器是centos的,大喜,进去看到久违openssl(1.0版本的),据说3.5的支持国密算法(SM2、SM3),下次去试试,开始做题。

openssl

一、上传公钥

在这里插入图片描述
在这里插入图片描述

二、用openssl读取pem格式的公钥

openssl rsa -pubin -text -modulus -noout –in pub.key
rsa 指定为rsa密钥
-pubin 输入文件为公钥文件(默认为私钥)
-text 以可读格式输出密钥的详细信息(包括模数和指数)
-modulus 单独输入模数n
-noout 不输出密钥的原始编码
-in 指定公钥文

在这里插入图片描述
得到指数e(exponent)为65537(二进制为0x10001,CTF常用指数),得到模数n(Modulus)为C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD,得到公钥长度(Public-Key)为256比特。

三、使用python转换模数的进制为十进制

在这里插入图片描述

n = 86934482296048119190666062003494800588905656017203025617216654058378322103517

四、尝试解开模数n

用RSATool的factor N来计算n估计是不行了(太大了),
只能尝试用yafu,yafu在使用过程中要用双引号括起执行参数,
这里用到的yafu是exe的,在网上下载的,
目前(2025年8月)yafu已经更新到了3.0版本(github.com/bbuhrow/yafu)不过需要编译安装,
只能放弃,也希望有人能出一个yafu编译安装的教程。

在这里插入图片描述
在这里插入图片描述

得到
p=304008741604601924494328155975272418463
q=285960468890451637935629440372639283459

五,用rsa-tool计算出私钥的逆模

d=81176168860169991027846870170527607562179635470395365333547868786951080991441
通过gmpy2_solve_proof_D.py验证,
正确。
import gmpy2p = gmpy2.mpz(304008741604601924494328155975272418463)
q = gmpy2.mpz(285960468890451637935629440372639283459)
n = gmpy2.mpz(86934482296048119190666062003494800588905656017203025617216654058378322103517)
d = gmpy2.mpz(81176168860169991027846870170527607562179635470395365333547868786951080991441)
e = gmpy2.mpz(65537)
phi = (p - 1) * (q - 1)
print(gmpy2.invert(e, phi) == d)with open("flag.enc", "rb") as f:encrypted_data = f.read()c = gmpy2.mpz(int.from_bytes(encrypted_data, byteorder="big"))m = gmpy2.powmod(c, d, n)print(m)

在这里插入图片描述
在这里插入图片描述

六、下载了rsatool.py来生成私钥

生成pem私钥这块还是不太懂,
尝试过pycrytodome、cryptography都失败了,
python rsatool.py -f PEM -o private.pem -n 86934482296048119190666062003494800588905656017203025617216654058378322103517 -d 81176168860169991027846870170527607562179635470395365333547868786951080991441

在这里插入图片描述

七、用openssl配合私钥解密

openssl rsautl -decrypt -inkey ./private.pem -in ./flag.enc
得到flag{decrypt_256}

八、总结

pem的密钥生成,openssl的安装,yafu的编译,以及对openssl的rsa加密后的二进制文件的理解,这些都还是未能解决的问题,勉强做出来题,希望以后有所提高。2025年8月22日

http://www.dtcms.com/a/344394.html

相关文章:

  • C++中不加{}导致的BUG
  • 笔记本怎么才能更快散热?
  • vsCode或Cursor 使用remote-ssh插件链接远程终端
  • Flask数据库迁移实战指南
  • Flask电影投票系统全解析
  • 近期https接口的联调小记
  • STM32——SPI通信+W25Q64
  • 一体化伺服电机在特种机器人(炉管爬行器)中的应用案例
  • ShimetaPi M4-R1 :OpenHarmony 开发板解析
  • Mysql事务特性及原理
  • 网络安全基础知识
  • 异步开发的三种实现方式
  • 香港券商櫃台系統跨境金融研究
  • CTFshow系列——命令执行web45-48
  • 优选算法1:双指针
  • 如何在Vscode中配置MCP服务?(包含实例:使用Github Copilot + 高德MCP查询旅游攻略)
  • 聚焦AI与绿色双碳 金士顿亮相2025深圳国际电子展
  • 【链表 - LeetCode】2. 两数相加
  • 深度学习——神经网络
  • 深度学习赋能光纤非线性光学:Nature Comms揭示噪声驱动系统的智能预测框架
  • 【openGLES】着色器语言(GLSL)
  • CAM可视化卷积神经网络
  • 开源 python 应用 开发(十一)短语音转文本
  • 安卓手机格式转换,支持PDF转Word、PDF转Excel、PDF转PPT、PDT转图片
  • 基于ERNIE 4.5的多智能体协作的自动化视频舆情分析报告生成器
  • UE5基本打光(新手向)
  • vue2整合uniapp、uviewUi小程序开发
  • Yapi中通过MongoDB修改管理员密码与新增管理员
  • PDF 转 TIFF 性能测评:IronPDF具有更快的处理速度、更少的内存
  • 携程旅游的 AI 网关落地实践