攻防世界-baigeiRSA

wyuu101發表於2024-12-01

一、題目

給瞭如下兩個檔案

二、解題

1、檢視程式碼發現就是簡單的RSA加密演算法,仔細分析一下發現flag就是明文,而要獲得flag就要解密密文,但是程式碼中只提供了e。

於是又去out檔案翻了一下,常使用記事本開啟,發現n和c已經給出,由於n的位數只有78個字元,可以嘗試暴力分解因數

2、分解因數(這裡提供兩種方式)
①線上網站http://www.factordb.com/

分解得到兩個39位的的因數,應該就是p和q

②看了wp才發現還有一個專門用於因數分解的工具 yafu<<可以點選這裡下載>
使用方法如下:

參考文章:https://blog.csdn.net/beizishaizi/article/details/128601121

3、獲取到p和q之後
就可以求解逆元d,用相應的演算法來解密得到flag即可

三、解題程式碼與答案

from Crypto.Util import number
from Crypto.Util.number import inverse,long_to_bytes

p = 274539690398523616505159415195049044439
q = 322368694010594584041053487661458382819
n = 88503001447845031603457048661635807319447136634748350130947825183012205093541
c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
e = 65537

phi = (p-1)*(q-1)
d = inverse(e,phi)
m = pow(c,d,n)
flag = long_to_bytes(m)
print(flag)

答案:HSCTF{@Zh3n_Ba1_G3i!@}

相關文章