攻防世界 cr4-poor-rsa


題目

給了一個壓縮包,內有文件:flag.b64(打開發現是base64編碼的)和key.pub

解題過程

  1. 首先利用Crypto.PublicKey的RSA模塊從key.pub中獲取公鑰信息,這個RSA相關知識點中已有介紹
  2. 得到n后可以拿到大數分解,得到

p = 863653476616376575308866344984576466644942572246900013156919
q = 965445304326998194798282228842484732438457170595999523426901

  1. 由p,q,e得到d(RSA相關知識點中已有介紹)
  2. rsa庫的PrivateKey生成私鑰
  3. 打開flag.b64並用base64解碼,再利用key解密即可得到flag
from Crypto.PublicKey import RSA
from gmpy2 import invert
import rsa
from base64 import b64decode

f = open("F:\\ChromeCommon\\key.pub","rb").read()
pub = RSA.importKey(f)
n = pub.n
e = pub.e

p = 863653476616376575308866344984576466644942572246900013156919
q = 965445304326998194798282228842484732438457170595999523426901
d = int(invert(e, (p-1)*(q-1)))

key = rsa.PrivateKey(n,e,d,p,q)
f = open("F:\\ChromeCommon\\flag.b64",'r').read()
c = b64decode(f)
flag = rsa.decrypt(c,key)
print(flag)

ALEXCTF{SMALL_PRIMES_ARE_BAD}


免責聲明!

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



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