参考文献: CTF-I春秋第二届春秋欢乐赛-CRYPTO-RSA256_he110_Z的博客-CSDN博客

题目

image-20210913220042982

下载下来之后可以看到有以下文件夹以及文件:

image-20210913220121749

image-20210913220134197

image-20210913220145942

public.key文件内容:

-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMKEgmFJGXaWeS3H/TOZ/AEqmPxU4ie6
MDUBJayBXccFAgMBAAE=
-----END PUBLIC KEY-----

解题过程

分析密钥

key的格式为ASN.1。ASN.1与RSA之间的关系可参考此篇博文(RSA的公钥和私钥的ASN.1编码_wzj_whut的专栏-CSDN博客

方法一:ASN.1 在线解析网站http://lapo.it/asn1js/

image-20210913221229376

方法二:利用kali进行解码

root@kali:/mnt/hgfs/CTF/Crypto/fujian_C74892BD664A142AF1F7F85F55754BCF/fujian# openssl rsa -pubin -text -modulus -in ./public.key
RSA Public-Key: (256 bit)
Modulus:
    00:d9:9e:95:22:96:a6:d9:60:df:c2:50:4a:ba:54:
    5b:94:42:d6:0a:7b:9e:93:0a:ff:45:1c:78:ec:55:
    d5:55:eb
Exponent: 65537 (0x10001)
Modulus=D99E952296A6D960DFC2504ABA545B9442D60A7B9E930AFF451C78EC55D555EB
writing RSA key
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhANmelSKWptlg38JQSrpUW5RC1gp7npMK
/0UceOxV1VXrAgMBAAE=
-----END PUBLIC KEY-----

上方结果中ExponenteModulusn的16进制数,需将其转换成10进制数

获取到数据如下:
(十制)N=87982816287542607821348020319142008042005562918106976160430773236821410039557 E=65537要想解密数据需要私钥D,要计算私钥D,则需要分解N,得到素数P,Q。

分解N

在线分解大数地址:http://factordb.com/

image-20210913221606254

使用Python脚本进行解密

Python脚本如下:

#python3.6
import gmpy2
import rsa
p = 274473488606178722897600533120866465659
q = 320551236967671239609994506214257226623
n = 87982816287542607821348020319142008042005562918106976160430773236821410039557
e = 65537
d = int(gmpy2.invert(e , (p-1) * (q-1)))
key = rsa.PrivateKey(n , e , d , p , q)
with open("message.encrypted" , "rb") as f1:
    str1=rsa.decrypt(f1.read(), key).decode()
print(str1)

运行结果即为flag。

image-20210913221758500

分类: CTF-WP网络安全