baigeiRSA
打開附件有兩個:
?1.import libnumfrom Crypto.Util import numberfrom secret import flag?size = 128e = 65537p = number.getPrime(size)q = number.getPrime(size)n = p*q?m = libnum.s2n(flag)c = pow(m, e, n)?print('n = %d' % n)print('c = %d' % c)??2.n = 88503001447845031603457048661635807319447136634748350130947825183012205093541c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
這n、c、e、p、q合起來一看就知道是RSA算法
已知n=p*q,所以使用yafu工具分解出p、q值。
語句:.\yafu-x64.exe “factor(n)”
腳本
?import gmpy2import libnumq = 274539690398523616505159415195049044439p = 322368694010594584041053487661458382819n = 88503001447845031603457048661635807319447136634748350130947825183012205093541c = 40876621398366534035989065383910105526025410999058860023908252093679681817257e = 65537phi = (q-1)*(p-1) ? ? #phi為n的歐拉函數?d = int(gmpy2.invert(e,phi)) ?#d是私鑰?flag = pow(c,d,n)print(libnum.n2s(flag))-----------------------------------------------------------#b'HSCTF{@Zh3n_Ba1_G3i!@}'