BUUCTF_rsa


BUUCTF_RSA
首先,一向怕數學,畏難情緒嚴重的我之前意識到自己這個致命的缺點,所以下定決心,以后無論遇到多么難的問題,絕不能認慫,大不了多用點時間,一定不能怕,要勇敢,要能沉得住氣!
RSA原理解析與數學推導(前兩個已經get到了)
前置知識:
1.數論的基本概念:剩余系,縮系,費馬小定理,費馬-歐拉定理
2.RSA推導過程
3.判斷素數的方法
4.分解質因數的方法:Pollard算法

解題:
參考了大牛博客(很多CTF逆向題他都寫過博客,這里說一下,博客園感覺比CSDN好多了,可簡可麗)
1.打開pub.key文件(我的系統是Ubuntu,可以直接打開)

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

發現公鑰,於是我就開始去了解相關知識,然后要知道從公鑰中獲取信息:
在這個優質解密網站中得到相關信息
信息

key長度:	1024
模數(n):	A1E4D93618B8B240530853E87738403851E15BBB77421F9B2377FB0B4F1C6FC235EAEC92EA25BB76AC221DCE90173A2E232FE1511909C76B15251D4059B288E709C1EF86BCF692757AAD736882DD1E98BEDFED9311A3C22C40657C9A52880BDC4B9E539041D44D52CB26AD13AB086F7DC294D144D6633A62EF91CA1775EB9A09
指數(e):	65537 (0x10001)

2.然后分解質因數

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("pathof.enc", "rb+") as f:		#pathofenc 是文件路徑
    f = f.read()
    print(rsa.decrypt(f, key))

附:
1.安裝安裝gmpy2(gmpy2的安裝很麻煩,不同人遇到的情況可能不同,特別是對一些內層原理不清楚的,只能按照教程,但很多教程不是都行,所以我們可以共同探討)
2.ftp文件傳輸的使用
3.使用OpenSSL加解密


免責聲明!

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



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