前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >攻防世界Normal_RSA

攻防世界Normal_RSA

原创
作者头像
babyctfer
发布2023-12-18 11:42:29
1330
发布2023-12-18 11:42:29
举报
文章被收录于专栏:CTF学习笔记

题目可以使用openssl读取和生成密钥方法,或脚本求解,rsatool脚本或

flag.enc 看后缀enc,分析是一个通过openssl加密后生成的文件

pubkey.pem 应该是一个公钥信息文件

1、openssl求解

这里我使用kali系统,因为kali系统自带了openssl

先进入openssl 输入 rsa -pubin -text -modulus -in warmup -in pubkey.pem 查看信息

代码语言:shell
复制
OpenSSL> rsa -pubin -text -modulus -in warmup -in pubkey.pem
rsa: Unrecognized flag inkey.pem
rsa: Use -help for summary.
error in rsa
OpenSSL> rsa -pubin -text -modulus -in warmup -in pubkey.pem
RSA Public-Key: (256 bit)
Modulus:
    00:c2:63:6a:e5:c3:d8:e4:3f:fb:97:ab:09:02:8f:
    1a:ac:6c:0b:f6:cd:3d:70:eb:ca:28:1b:ff:e9:7f:
    be:30:dd
Exponent: 65537 (0x10001)
Modulus=C2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD
writing RSA key
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMJjauXD2OQ/+5erCQKPGqxsC/bNPXDr
yigb/+l/vjDdAgMBAAE=
-----END PUBLIC KEY-----

Exponent:指的是RSA中的e

Modulus:指的是N,即pq相乘,使用yafu分解N,得到pq

代码语言:python
代码运行次数:0
复制
from Crypto.Util.number import inverse,long_to_bytes,bytes_to_long

n='C2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD'
n = int(n,16)
e = 65537
p = 319576316814478949870590164193048041239
q = 275127860351348928173285174381581152299
phi_n = (q - 1) * (p -1)
d = inverse(e , phi_n)

with open('flag.enc','rb') as f:
    c = bytes_to_long(f.read())
flag = pow(c,d,n)
print(long_to_bytes(flag))
代码语言:python
代码运行次数:0
复制
b'\x02\xc0\xfe\x04\xe3&\x0e[\x87\x00PCTF{256b_i5_m3dium}\n'

2、rsatool脚本解

需要安装gmpy2库

代码语言:shell
复制
python3 rsatool.py -f PEM -o private.pem -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239 -e 65537

生成private.pem文件

代码语言:shell
复制
openssl rsautl -decrypt -in flag.enc -inkey private.pem

解密

代码语言:shell
复制
OpenSSL> rsautl -decrypt -in flag.enc -inkey private.pem
PCTF{256b_i5_m3dium}

3、CTF-RSA-tool求解

代码语言:shell
复制
python2 solve.py --verbose -k ./pubkey.pem --decrypt ./flag.enc

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档