BUUCTF--rsa


測試文件:https://buuoj.cn/files/ed10ec009d5aab0050022aee131a7293/41c4e672-98c5-43e5-adf4-49d75db307e4.zip?token=eyJ0ZWFtX2lkIjpudWxsLCJ1c2VyX2lkIjoxOTAzLCJmaWxlX2lkIjoyMDV9.XYl7ag.BZcdhjGojXT726Y0wj4m2X_OOyw

 

文件分析

第一次遇到這種題,不過看到題目知道這是一個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加密文件。

 

公鑰處理

提取公鑰

IDA打開pub.key后,轉換里面的十六進制為字符串,提取出公鑰。

-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+
/AvKr1rzQczdAgMBAAE=
-----END PUBLIC KEY-----

 

公鑰解析(提取e,n)

http://tool.chacuo.net/cryptrsakeyparse對公鑰進行解析

公鑰指數及模數信息:

key長度: 256
模數: C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD
指數: 65537 (0x10001)

獲取到

e = 65537

n=86934482296048119190666062003494800588905656017203025617216654058378322103517(模數轉換為十進制)

 

公鑰解析(提取p,q)

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

 

 

p = 285960468890451637935629440372639283459

q = 304008741604601924494328155975272418463

 

腳本解密

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))

 

get flag!

flag{decrypt_256}

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM