Bootstrap

baigeiRSA

baigeiRSA

打开附件有两个:

 1.
 import libnum
 from Crypto.Util import number
 from secret import flag
 ​
 size = 128
 e = 65537
 p = 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 = 88503001447845031603457048661635807319447136634748350130947825183012205093541
 c = 40876621398366534035989065383910105526025410999058860023908252093679681817257

这n、c、e、p、q合起来一看就知道是RSA算法

已知n=p*q,所以使用yafu工具分解出p、q值。

语句:.\yafu-x64.exe “factor(n)”

脚本

 import gmpy2
 import libnum
 q = 274539690398523616505159415195049044439
 p = 322368694010594584041053487661458382819
 n = 88503001447845031603457048661635807319447136634748350130947825183012205093541
 c = 40876621398366534035989065383910105526025410999058860023908252093679681817257
 e = 65537
 phi = (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!@}'

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;