打比赛的时候这题做的人还是蛮多的,但是没人分享wp(是没必要吗QAQ)
然后也没找到pwn-impossible的wp(希望大佬有的哪怕是脚本给了链接)
题目是个简单的RSA,n不可分解
但是题目给了k=(p-r)*d,r,有了这些信息可以构造以下等式:

先计算c,再计算c2和mul,通过最后一个公式解出p
就能分解n了,后面就是通过RSA解密
利用脚本:

import libnum
r = 663111019425944540514080507309
n = 764789710135699120066739558828098633577013306253421553430847195908034244362783426399681889172711929793563731863384139872322402736681090085666598621114324939409408964563306677742741428195863966989898498906831204752157005288028055139678360291316075877219030667685558110323821117721956754066208709423674599070852863328081495564626811408881020379619280834606394873439653313479059367387482717449792132890040814302415880441497255508283415162957128101398055871020323457216741679183472993371932538507867941404875130906965322325847739960927163953539809036794727803609900302282116111729856921452995125114084009947877974251520302979592670067613546606144401980991349553446645445805493512099309153534117016242573188431650384053169169037929526267038289233193459168030309932136331042640250813278140485915435024593329769782476261202489190771392735516338128092461124553594475652005536021219004598007475896848018535883345275525698202912140165492830229318458220859621536946916060728450732293426918231002157025978449298255884607961112874423611768107044113994666509578842156149561812558917421973274685922015605898024562717582262195308188734233843441532414373538708641762976079302448555298697105806160447760545580129674268456624678445339254341281619657391
e = 65537
k = 11376230879464757138290711299984908778464289005173308608189545435463525777268265977729128994228398091834020517958489408848527244519720030536561582611244172458641332639632981518360153087977263620583037286868169984156081495975325137150308201181821183705406433865681037783672009245951450744893423967519534524564872374719067025656950703655360275719627553370956932353637447232396991057691540662128565377895571740302756624004115592822652032877787683190174651306416910281916239819514603714322474683948222133746696116347630808594215555899448203106168014521796360515931362871133025281314243806320464177354177591228332335003551614106832308993911767231860241219942930903683175017203214440697826698228720134550320203010201162227480574211558033922830875117868895970801183417628548046732735178684031479465866770555097097049039401697156697973726498505003813383696303149763801522877588926847414588086172187481338569607545109010485980789181176815929895776940791230453092924387422291052184177606568352378605741988346025715326590594607822822612290794021218154340474272030636989456754518795702696600378337733961339618639033487933752890208434609460829539754273357617487166483257224739734126886305602260084115687043018921964438528469917594211427068125222889990486298031116975211308319185008573568652053973895884503801570264426091699176024805955546836991196229298757508243251307657063191639987383783941231455894746140575040062497070116929901714063774213552073013057990495816268901523247960107878691144148350592800965125699719038873342744331101838577313168280165305316417387319080806526792235761499758367535234473231638455540814177514642349235328627096125963532214440347089295557895745448430528014032156116184317483847359679936198373071447646642313893200567858353913090847963730766120387076016399374559419994285225024354973914324859198201290795827297428960819444555465333396
enc = 519467713751094904598159022987103691511259274774209441519584888564069062035542644790087060987328959901741258501300093004420044123445481880407931231251958038012202388431636518139006455080522439415387864531982679321682285383734096803256001152937208459295510574757774947236169715202686520555856020855830320306057953008472084296427565355650566174395167777311640285184545830854189876412541067203365997646606165015569235777861406389883205463918051602307946299751610157571027193186245476691847563482840661345021243975217146282342518010810920020230971527413391779187267622754114008860968975577345904021780725192599110737273118516636021100280200540920405328862817744421031962393190088934140614567426323356145174745440656955066066262578429403793555647695057101961696889758526647133883002687772114221068613633288847933578978346227331298499828986369407775151906995962535008597673126821214853383052870910694479916045213576126805625271271078396132288268874265020044328933205952291855156951015240630266575353489117982749485099045184565551566699809425298560358547342684827513213367310680503970306410329482201797661612173789624356845997386309143966652007299888088648017505165599209010954534155765247032891935634559101027944693354146550957638840559533
test = 2
c2 = pow(test,k,n)
p_r_2 = pow(c2,e,n)
p_2 = (p_r_2 * pow(2,r,n))%n
print "s",libnum.gcd(p_2-2,n)
p = 25233253064025100295966044052992868651938757778235029740694086450740828964691968674994071654829407172084083330304218665388707889483935025393638935796458441829579111388362183914601466603012883968555390471153658271704645977909167356234620058847623269493111862656840583922807175571153228497561028994386680340986318100478704339678545401090772005737788274181016454318516504947113820053552393041765934667917060235212098698051049858348928033874024892794089428585610818354044852752852998574190973928571443129679374029773971365640609772832657150305906058725561195072972174548678101728467681896498524652558185028323124451894337
q = n/p
assert n%p == 0
phi = (p-1)*(q-1)
d = libnum.invmod(e,phi)
m = pow(enc,d,n)
print libnum.n2s(m)

点击收藏 | 0 关注 | 1
登录 后跟帖