CTF RSA练习题(4)cr4-poor-rsa

一、题目:(来自于攻防世界)

 附件:

需要更改后缀名,才能打开,我这里先加上 .txt和加上 .tar试试

加上 .txt后打开得到如下:

 而加上 .tar,解压后得到如下:

二、解答过程

(1)从key.pub中获取公钥信息

方式一:利用在线网站,SSL在线工具-公钥解析 (hiencode.com)

 

 方式二:利用Crypto.PublicKey的RSA模块从key.pub中获取公钥信息


from Crypto.Util.number import *
from Crypto.PublicKey import RSA
import gmpy2,binascii
from base64 import b64decode
import rsa


# 从公钥里面提取n 和 e
with open('D:\\桌面\\bf930316910b451c94c41ce8a9d851a8\\bf930316910b451c94c41ce8a9d851a8\\key.pub','r') as f:
    key = RSA.import_key(f.read())
e = key.e
n = key.n
print('e = %d\nn = %d'%(e,n))

(2)获取到n后,尝试分解n

使用yufa,分解出的质数太多

尝试其他分解网站 factordb.com,成功分解出了两个数

 (3)得到p,q后变成计算私钥解密,其中flag还要进行base64解码

from Crypto.Util.number import *
from Crypto.PublicKey import RSA
import gmpy2,binascii
from base64 import b64decode
import rsa

# 从公钥里面提取n 和 e
with open('D:\\桌面\\bf930316910b451c94c41ce8a9d851a8\\bf930316910b451c94c41ce8a9d851a8\\key.pub','r') as f:
    key = RSA.import_key(f.read())
e = key.e
n = key.n
p = 863653476616376575308866344984576466644942572246900013156919
q = 965445304326998194798282228842484732438457170595999523426901
d = int(inverse(e, (p-1)*(q-1)))
key = rsa.PrivateKey(n,e,d,p,q)
f = "Ni45iH4UnXSttNuf0Oy80+G5J7tm8sBJuDNN7qfTIdEKJow4siF2cpSbP/qIWDjSi+w="
c = b64decode(f)
flag = rsa.decrypt(c,key)
print(flag)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值