BUU-re-rsa(2)

迷路的菜鸟,CTF从入门到放弃。
题目:下载地址


转自http://www.manongjc.com/detail/12-pbtklraccmvykmh.html

rsa

  • 1.文件分析
  • 2.公钥处理
    • 2.1 提取公钥
    • 2.2 公钥解析(提取e,n)
    • 2.3公钥解析(提取p,q)
  • 3.脚本解密
  • 4.get flag!

1.文件分析

第一次遇到这种题,不过看到题目知道这是一个rsa解密题。

公钥n = p * q,其中p和q是两个大素数
e是随机选择的数,作为公钥
d是跟e有关的一个数,满足条件式:ed=1(mod phi(n))
phi(n)是欧拉函数,phi(n)=(p-1)(q-1)
转自:https://blog.csdn.net/kevin66654/article/details/54087647
pub.key是公钥,flag.enc是rsa加密后的文件,因此我们只要通过公钥文件解析出n,e,p,q,d,再利用脚本解密rsa加密文件。

2.公钥处理

2.1 提取公钥

IDA打开pub.key后,转换里面的十六进制为字符串,提取出公钥。
-----BEGIN PUBLIC KEY----- MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+
/AvKr1rzQczdAgMBAAE=
-----END PUBLIC KEY-----

2.2 公钥解析(提取e,n)

在http://tool.chacuo.net/cryptrsakeyparse对公钥进行解析
公钥指数及模数信息:
key长度: 256
模数:C0332C5C64AE47182F6C1C876D42336910545A58F7EEFE
FC0 BCAAF5AF341CCDD
指数:
65537 (0x10001)
获取到:
e = 65537
n=869344822960481191906660620034948005889056560172030256
17216654058378322103517(模数转换为十进制)

2.3公钥解析(提取p,q)

使用yahu或者http://www.factordb.com/index.php?query=86934482296048119190666062003494800588905656017203025617216654058378322103517
通过n解析p,q
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463

3.脚本解密

import gmpy2
import rsa

e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463

phin = (q-1)*(p-1)
d = gmpy2.invert(e, phin)

key = rsa.PrivateKey(n, e, int(d), p, q)

with open("C:\\Users\\10245\\Desktop\\output\\flag.enc", "rb+") as f:
    f = f.read()
    print(rsa.decrypt(f, key))

4.get flag!

flag{decrypt_256}

想要详细了解CTF中的rsa,可以看看https://err0rzz.github.io/2017/11/14/CTF%E4%B8%ADRSA%E5%A5%97%E8%B7%AF/

你可能感兴趣的:(BUU-re-rsa(2))