"网鼎杯"CTF Crypto

已知:题目给了一个文件,使用010Editor打开,可以发现有PK=(n,e),以及密文,并且可知道N为2048位

题目以及求解出来的D

求解:先解出私钥,然后解密密文,得到flag

  1. 首先分解因式,可以使用RSA-Tool,我这里使用的是在线工具http://factordb.com/,能很快分解好因式,然后把p和q放到RSA-Tool中求解,获得私钥。

    factordb因式分解

  2. 求得私钥后,使用python解出密文,python脚本如下:

import rsa
import base64
from Crypto.PublicKey import RSA

N=str(25572000680139535995611501720832880791477922165939342981900803052781801299380515116746468338767634903543966903733806796606602206278399959935132433794098659859300196212479681357625729637405673432324426686371817007872620401911782200407165085213561959188129407530503934445657941975876616947807157374921539755157591354073652053446791467492853468641331291383821277151309959102082454909164831353055082841581194955483740168677333571647148118920605752176786316535817860771644086331929655259439187676703604894258185651165017526744816185992824404330229600417035596255176459265305168198215607187593109533971751842888237880624087)
e=str(65537)
p=str(149930380465516707151079321019435489399072155945793735032334088844599773034021170995501688132861944516938448679935403246643441984203770825485165700862168437691254557323938150173733659070945061763789341407547559935070758242521126066900261360899379463301621378242061934281538210192731229473900396425739817670867)
q=str(170559166199281256887953076784727902849936084815549184550874370897326056825177365209113910954088389779180174518262922176726833811470419181874717574929460298509184863124213663255559781224744696195678069242025195218017449489985102637547369070225979448169459840545693721393354651993457943927480894225788038743661)
d=str(1538916500335235515307257927383995023293542960807860730894254653709681925092035821298626289395296581466612836540063384131352352130277697208968404395744771876727344459801636682705584291162671102081076931367783790516038495279614095829925982209779031189068501507550048330770021867843468227751520952846339514996723626191226905955780331782273745516309573595316056282862052039815540026073537327458660646724709717960296921973384643958475057040827777914707994762920845616183068242655035317317897109547169038826344580017286634712571145250144115303844913401962707723630529487395893542087379301759386207822902199643279129888193)
cipher="DTlEiAKLE24m19es4TBWl4Uo2MvmQMEYqWBCFggWJlJSjCwl3fT9322ytgudiQW2raDh53e6t2edygpFOP+MsAPXlU469rlmVng5JyDl0CF0ypevnaM5i+CvNT2mBoDadIYnPBVGMtj9HVVPDpMIgv5bF9N5ddQS7JB21oDdQBdDLTkKvcSqegtjNFv04R8+yrqOMZYpzdCRRw0j/MMt2JefC6z36mjrTL85A9EKlwKg5ydW7qELycfjBvzB/cwJ7mJ2I0xVPToa3sSLNDyddFttATwU6wmCa4XaWpTwVR/PfET2FRj0p+8UwYSDdlLLh6gRUVURpT+2jc9zx/rhOw=="

pr=rsa.PrivateKey(long(N),int(e),long(d),long(p),long(q))

x = rsa.decrypt(base64.b64decode(cipher), pr)
print(x.decode())

  1. 最终得到flag为:
flag{D0nT_uS3_Th3_kN0w_n}

你可能感兴趣的:("网鼎杯"CTF Crypto)