一、題目
給瞭如下兩個檔案
二、解題
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!@}