babycrypto这道题拿到题目可知是RSA,大数n使用工具暂时无法进行分解,而p给出了高位,低位还未知。
在网上找到了类似的题目,原文链接
GKCTF_2020_crypto_babycrypto 99
这里使用到一个开源的数学软件sagemath
GKCTF_2020_crypto_babycrypto 99
得到了p,于是接下来常规的RSA求解 import gmpy2
import math
from Crypto.Util.number import bytes_to_long, long_to_bytes
c = gmpy2.mpz(1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361)
n = gmpy2.mpz(22356763374676421464625378500213339933332772809897207920729779273423674391734609826525432054721219700275907299132471518921609327317193522567659631757746842030241874692914098354564311806192080734895649520789778880115460999713973202684541940857690744940359412410680906226760273075221532248260114209496048785258860756023841150910290983974843412361701517438220974722832625030127395031631696995777436058406987465592189873785392136925593708921923255186282515777996509326779993612528103615281644689464568237409082282767318227236298791238683706176542426759149262625349498709445342710799386836175120162674849965878446213480453)
p = gmpy2.mpz(160734387026849747944319274262095716650717626398118440194223452208652532694713113062084219512359968722796763029072117463281356654614167941930993838521563406258263299846297499190884495560744873319814150988520868951045961906000066805136724505347218275230562125457122462589771119429631727404626489634314291445667)
q = n/p
e = 65537
d = gmpy2.invert(e, (p-1)*(q-1))
m = pow(c,d,n)
flag = long_to_bytes(m)
print flag
|