[鹏程杯2023]复现

SecretShare

X的20个值和R的21个值已经被全部泄露,X和R都是1024bit的值,此时X总共泄露了32*20 = 640,于是,此时我们可以使用mt19937将其还原,还原之后,我们往前推20个1024bit的值,便可以求得A的后20个,此时便可以使用方程组求出A的第一个值(secret的值)

import random
from Crypto.Util.number import *
import gmpy2
from tqdm import tqdm
import itertools
from extend_mt19937_predictor import ExtendMT19937Predictor


leak = 158171468736013100218170873274656605219228738469715092751861925345310881653082508445746109167302799236685145510095499361526242392251594397820661050281094210672424887670015189702781308615421102937559185479455827148241690888934661637911906309379701856488858180027365752169466863585611322838180758159364570481257
p = 667548632459029899397299221540978856425474915828934339291333387574324630349258515018972045406265448494845331262999241448002076917383740651362641947814545076390796789402373579283727117618532504865966299599663825771187433223531022829811594806917984414530614469374596457149431218829297339079019894262229453357029
c = 9658009093151541277762773618550582280013680172161026781649630205505443184765264518709081169475689440555639354980432557616120809346519461077355134139495745998317849357705381020225760061125236265304057301286196004542729553944161451832173970613915423841610378207266606500956362098150141825329354727367056070349148059780287916811442861961254066733726576151134458892613951223277692935141880749737598416235307087782001086096114978527447987308876878393763055893556123029990282534497668077854186604106027698257663251502775547705641708624619340185646943640576690633662704397191379303254341343433077302686466850600522990402912
N = 11790604055677230214731474049594783873473779547159534481643303694816346271798870343160061559787963631020684982858033776446193418629055210874285696446209220404060653230407249409973790191858423402504530660556839353260629987853933304089439885784684686555554108157760445567974629355878575105480273451284714281430590737346099023372211403461861104391534461524711472734572409128196536805998116015230502045333769525693468193385557827209520108839913096017750428926467123493650506193757937746017474062985480713594474378324234033232933140389879312722642144536418253323908290256009510135710208223393009237664704631175216240376891

X = [27322282703709511636610535806856853612612796524565963685352821215367702697670029638291472271242231649191714479260517868076984065989639273952206721225394449809512736309152963717666213669565294618889004878502587203292128915123582846437035618297859622373514552659661751919687138158714389205196365694996691846589, 91805670014258342004112051538515158497977951249015335208828337677065661825541672701641011001509677094927054079355384880161339840664535548572711525978354947655159331190183669338379535914171636373271711777662899462412133698069202075760175522929409084089926367963132890460921167025666146228784502671381146711019, 66920426958285786458658248767160362920977647430969423155679844462544037512659182174429654322739226216034435833627040279237803034255254749729584723025199164153117416758037930376665769001615518843769072788984118288795594844920830871790000441610452127329422157793240336858492947908675187651204641324347460068225, 5635003138990118507194506070175086831788576611651929217926664518872856396687497543355452282932759792957815071333069987192436081970967301109108636547955400620912244311244917063515500624803643902206301188548901042409824866123277584384961209855675044800618682367677428510425729333590673520619706804051348640739, 42911212495890251189243677773682023641022813626312578449123776026147091248993904833237700742589532896024024290404122897946672451644535270088285040557715419433742408043822628453894022912746599564701384030731888203683342200542550299021286164291609827209395613247858235556551967071480178477133096158123879827699, 76393649631519338646914577444953093042692772742019473672660460181129677128343169843350211463697634615281051117955282687134957585026912161500321667521577171255986824727912674810018184784281896427202094684250866650111325600908495879530295097533881586073569958225485019114664641193908557023741440163457101525203, 79331720524907914908041917436319036255433828287857696014126718015259444328868691897077115926451094233087906865422458137916362681754241848523015955481140065721679824678490152910531795497192050173146826300375546645932629884190392808650921115445830421927238985963684104496062702531620988113510613763043301631209, 34982047515239854027766260430773762615551551624040650169394931537920509836795394460680530502277933252344187876902284046236616780767724165813414385632503982500888235012434695560644146038269348824756839799255778718600829638272259933042402900324341026396868817418250681063616205184019449176410323763562609906256, 152419925215633402551037300484006425703951620959940334562270582763998688826301000834158083436618204487451531847804246279293440954881219913553470971941979760351736535195521294640333019382215259554425750740788262905693120027837778006639912907313405166887419201498400381605572044667968915799849914769886304855469, 7879488845815070796446980042322339499701160196159748256186513316298957679171765636643576866967308539398870809808590995575054707633585889782359230149070757943670854204408729244422811261494912348733104477093541158692065916137178255072991528458124264991587844119002172895462900656781795781239777162351236329010, 127514038284722450386599280575918286761060061225148526034466492640545892790142008459404252129894996614536417849770574953585543450549469396103606474736901175227788222676384874264401431651217507860669506781393523454290522077615631381023377385798837961138591946856445250933293025411868935836885350047926486897489, 73523397212562449962797322407800812476585158706372414597501601851658987192829920809491154804458216832212324494892234069944533082031068984251998442644045753330748501446440305199570609290581400456976816997103538669480916305434314437973807842397862244118575425198027445648296131215572682266387781847672276278105, 147348014782035263557672447461924770257688598176948741569841957313948631675235455168853571742962013610522674191595258437726941866803703946285611136667070559549648062172513441677274884328986422767953568184453855423313870118663236611714535321243624425127415452246621538957156768109051856015526921750034402814181, 107396275167806069862891568873373042687841775147343147252292584080352003252925523814251826627764872245643578589633919368796490434000761591564932634968812847926559005905574630301932715978159346119216934096015784765061798867698507880003720720252714582289061793936959096457352973294797409716470781535683208662390, 111553464316331929637928443274530253217732988900086332463018159619552721468104642096142476958790984335379754112570481423047457696400188847850295271972015619208861578167810076654492163584804626343101458265888573313262592215690879907819608901681957001286346406746245896172209892822686784252329450759497940157817, 152943203796417374728939496393486026220901654584673108139041097288333960510566510856084351323729904924640199712274885275910827036984793221821982353991291820643933058458639690879406578278096815789977814737418245161029735350306516366692394206323956675431185964629143452067819609148096407834611672577927865412392, 166939346435092804149361985966477026395490869535977170373479116381554623702088662590719710620315106535772321371981485114999353813392487182004380368980412304867141197881584179316802946420573712884869207029807032629508803275758495901655593573546020371363238621118513519707566850164838945538265367877703756561143, 26423433781831557303965218555715659459964805457875828323769054957811368313465747671809917056868138188812894920739462390440860614780050790166810205409831687879766298929374237068956851330280802672993787657036328401560347701569533751904003924033296103431436132762238032533631035466975563403490612905290747500034, 67047973882442026847054596043723251652019181826511387455752441275468608245799296406017022023236054643173589545621722148324431435563020855357273526765167504290556087855144498047600331414488129605467552541562176094510433084299150667280746009871632940612151871433089450237469253872190728223812058292760792048327, 105924866908333941056520542136279835222849349889633638544229314020165638653054683617844504431167584527725854457445810982830025832114705779346552001573819055283000133195971409988231558773967828820675125138322725072735898886865540351014422681184954059397593545246946913932272750078695992276555307091275819914167]
R = [48569244180151557205855904296808011040310995626104180491157243372509052545941856322458676083637192423759673249488348244220016168699221727901608142636001227515271570470832957720323162015971262916929310707561503164723954043820660896942792324593262461443662124187475159194385198887788939215142063719188348359051, 399560428917764748532974912549579755263000603891290776423346071350694440330590365031312031331274402458285677563081638572382883720599282186196046608483533823720739712120092762382758124206813101015928952314835833408960456083078746116580899849811889743359253318716527623535224217277574914341453477162101109304521, 544937610110319318485732752819003299421900030583201619755186005418563198983178922830516722630658659738570688423587906326520697827239870483140381321035311084086872965680985895264808839131965351704781276541438910273061170401708989341983455583148675268945159916067944049744805262336310315984482684477033006734287, 216744037211012509915361607447276981890614637104708083303422302996997658600655325492799426696396129495740380030328486134561677905050895542824084902986133831827678164847190414920208201189028697970734101241668427915881431218718486605095651504942024880541330783245275847421981881418579001271393784051391703426641, 358625812085590413825860316781088505612223852757468112073999439178735803245018313087878704846077887688463179850461438873261474235563220723161414348183847290126780153336526214025645436877174640254582752642464699350692290355463838062957644227630261763964930791440438099097640358707938365934460765509770713422802, 329857997030576972729986815876777011654061886138716155424533348668225264710995265453134377944058890193085147694227229106567976594481366856016163332702128728982600129466565167735283489379015199424332093096162272256722421083932784837620468049877168507039726118947169347011547142986416984741443370137649949904461, 521812627987763620197812504899506910796946504850708570349667428211492401785051233252744740254058319678959842396710646375803470815528610618211136953181796072686187773678649762524131730689630306575027480171902373722358678386430941181209464823845330723780859962168995759134414896419704465387883718956885830089204, 620605218346899770429088593442355698411635752845778736545505196875522232769153705673917137123151382118878693457232039690080398947092819660645917999264381455940649845030563994094759265923737413658758514560434230280086651591011706752452769554749328591613510563389443179182520711924593818729897121279090347342924, 534016646028730727016209888504911167747835078463480349483097394578844831015450227232096300754745773717118904569821782762146568167060585024245190142726454552015507956174745334336178848983708347742569471390328051491668238788357493167057460607669219247924675410096486695085439718252206048534436114032676610106347, 88871679849011995091477347542680893996957786653924621705917895209560005458566552006873467270402185918706978818367798743110976595300781848502254399030378598802075501163781912730014790884964070072432678736909128727529050058640555516131888412874572332236693843543870582425734398659970857777429709921292338764056, 77024841353020037736072564671223528105040202905964518913084686725674447555778849580882283151820241410917813178127609045792603404416216635536183501218256797138848233777386900397758052436048023588018973775841429672943588531118120531410941119451112420484244073744860360930771612798228353879418110447613074103121, 358131172545144245017725954943677533669555698100417873957892816178502113778385580423968891034087567143540060215845324391804373505677355257229040486254496477702089813554705646138200115877254745085768546159462550014224359419574896275660358462631189412166193397952134507043404147073495973377634175173793168251233, 595636882372433751112400377321820719222073583356736222414778628384644623278463447644996314505722523949309416112422725194730843858188224367723911893838329601709038981556011159397788345709995936511801237268248578658463705897357408752571102163768839107050797667376601808299838509114230891979045461260911946415320, 395153432543738329086362624068574193255148332584492341243454102818775521905404929692387305225461869410602734064349062513722129355095148212452014041134124275764033437990333449975234478218955405224252839531173866658663372361601107447751367104423527019655871175001744848253584734158351726745551407103825286804486, 511651161619212591638982125008326295422605195202233521320827338823708335474320214987121320809834264020752488400694820412703895872293388034242395958165882000777796549830919064001864919411540442573874044781198129468230793584507078981976925332170577699344654086418908951152825866266645119298895702972413286583958, 601919715680710925447421076338078877766683489886991843150153117466383328925764100913643134608445665513170565014760605822708267601346612031986281277217875335899155526135282569237278337539198315798958944970975021604720637053079350115793916435033122479416157536224071649845398032404766802667331247026412465230897, 234820987787318061334406237477763453845428872967687650137534289159784627741552971152526376041477941966693305257682995443922827379938186523574311761092208293391813942996139561570362972331975732091581332378414745250571717259039007898729580445364373819332663464831222506646891337600543033325723536694430603794811, 564564388847953966153849841262670748320376369154008357907963983929690302350574296789978591185246923974920161797995189321841257011791368992972604074119872162539552292552362460968499190796503841035750507639233595470833894116053816701560762298879109510469040808411623441894361241720213857716595525048872499260906, 190023992656957817692909813007060815279103259429273681430127196398700351704377473750794054807013341268132331757606642253453911294388801612173064841530999650755116853772677649649669913317951539550313189351839325961495963700012333982508285993230904890545000476087981313109451079110864357972818329854737276461934, 590597067702351181983043135203878889479903130263737024839941242154123057325926009112777887235038694551309864253859910817785607380293492455212053557033975616644911248422981687394189486917578693691299595122658518879946708562394161159104748320544408107959224087679644857953504156164164979544525935685064483284685,158171468736013100218170873274656605219228738469715092751861925345310881653082508445746109167302799236685145510095499361526242392251594397820661050281094210672424887670015189702781308615421102937559185479455827148241690888934661637911906309379701856488858180027365752169466863585611322838180758159364570481257]

AA = ExtendMT19937Predictor()
def Append(a):
    AA.setrandbits(a,1024)

for i in X:
    Append(i)

X.append(AA.predict_getrandbits(1024))
for i in range(21):
    _ = AA.backtrack_getrandbits(1024)

A = []
for i in range(20):
    A.append(AA.backtrack_getrandbits(1024))

A = A[::-1]

num = 0
for i in range(20):
    num += (X[0]**(i+1)%p)*A[i] % p
secret = (R[0] -num)%p

e = 65537
P = secret
Q = N//p
d = inverse(e,(P-1)*(Q-1))

print(long_to_bytes(pow(c,d,N)))
print(long_to_bytes(pow(c,inverse(e,P-1),P)))
print(long_to_bytes(pow(c,inverse(e,Q-1),Q)))

colorful_matrix

The Approximate GCD Problem – malb::blog

膜拜完大佬的博客后得知是AGCD问题。

 造格解决:得到ms后,ms泄露了5个256bit的数值(5*8 = 40),而a泄露了37个512bit的数值(37*16 = 592)已经达到我们所需的mt19937的数值了,于是,我们便可以知道iv的值。aes解密即可。

import random
from Crypto.Util.number import *
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import gmpy2
import os
import hashlib

ns = [38630062416586710341458654419912504176237737247477839749085033080367529539859992076587411537805430366799412095876782912512744262957062106155418341531142309858429218208463637096843365217114990765965110566415965985105403996944993619708417839598461935470469097206342256014086162845948208599334925650727933097059538199199685364793545286980392966271769914201657672004082101110775504946586957241075964270454872257405872181588544468173017149763827540561921126826597515171761064800381983526515300315517818122598179574900255685121991744205071544970, 41522753602903133841910260331594875922287719226997542592715810409935551768308104573333760854332533376702631593490915962706512143045107096658851885513727202513616813054397657610854303071682604806070009002234312854968365250748142324994926715544722158698813288131533399544263105858513134170084625526223987620550110255872688155827773099232631041345207194483609514502522566888883736218471849075697433311580004701384847571029783514418685068903758509270527252444771313048094566344002411364378658592832008194309873599342916391769027015343562030852, 41542983120532762175372001624404625565366126179958909731196555044290633581761361918706298428954501507557598076910710787422049443564800530253137695341299743714514361560156305534490483794181933110893966453220306980682146624294992100948497284459992930850081254114996830645068636306625330524465991656430799359422407117440063911943625477783216502523414967017151717597372146324488526509879620785458016456593044828784565522423332830549325397893426472247197776412026158371655860380929692662547882654137064941217130915364306358205055760044763651406, 42853015443318352230776688785915441259875645365236808434164117288657978345098324019250085686482568413223085548506789311679316323466083886556772338612177680666217592255234589446979456714341877135596118517098603502394776049958587301113539552072352462301070489369653155854389890761241450743607560719433910573462283304103064437843063566946231984094581307498714742271881862348689297267558023093643893310002803310596286441071314219020032740336515363830250477649030557311461077069407775907176409762823453607196260454965048316567154365877848652918, 31152961872836435078296602982779340735140569916125711058616435902653202922218293684857125091648631460215120167354825278469413413558325850576700866199515219603448136082693185200558425103833947831228064760642508443585470729998592994719564254894176473779555436230174300038353978808432410463449170865897259181312953584408177790825688497584119467820716449210429423337019604137134889051973100340798405991782200038835066294194815913887924272593864934325496116821854183293510325217934617021428710898873475027666892706022106386340733691632884942848]
A = [12789809461864875489953273982997537541385904671489556544122095227619591140533414669794423644619127980362623481580128258914287474542792728686579090501397390, 10463950513938701625808784986819665844287315724639315128677227520960105897990256530542006653611594269012930935073966767351788182657861624733138283749460454, 5253244650607533810967862436125419800679723144526973463211784033045021824966560017919956773745212139142517766154626849426827164032731516615725539069585525, 5644589184984504085855423002268477365020278981591337230721358313393863912025011466727192648804002734561676112555123877764178690726130713927642577324443238, 4231732567865883627242742552738439372803539125622706171540910152922080004603138662537022248675968288205781990968838888633816697065257733344028576518431020, 2483388920404524165854675814798022834892112957478917588986471421083048888193527751575039626887367465858751417977246719312923814782809309525841102293919541, 3252353812256192711411255830105475125944842449239880454539397067913664088094160819193268643401968970009466652179043139341471403913410402646923633696154454, 11575010486066232687430367040977113580882826853104996856464797182632266635060724100357205810604915010810884387573114266349621457564659060272935537811111850, 116107444921917032985259963199427176510900273385517435613848456370557161312731449337837406563733552524777525870560544042690403987311424820755256727586807, 5859050133610438843641532306693688255014116940390205022708310454673159702673207152462501010791971695002865650407033762568636006764435795015869726867643634, 5954075553161305677556950650395792531753502207483036473422070018485916621872566706504374038792527687442272405589975343003802956899043321092006127828986114, 4571747544457157571652286537158051402285727327066029382085461714597609990601683125994983291866807816649968826930652068427193317966970789937746419206862747, 7166507561570980603812241332170524724051295937096000768984168029904561160020043035660087151672164814332446644696618077835020463308343415953131944864257266, 4852042788460566411381271873349329096978244586097817622748766708426751073559942708861852208085367014057217116211249133109246735634468823924185525972777655, 11962941918999276757181090570698839032103646409734781047194175833198626142790676141060052011581957980660140931408560130449153056874213033784715711461403345, 10324508881746579337486319574059121005227580732153432145860775835052420139026016902518605634385512021513380467928195663920843022679549517463264144660593354, 13276257094435850052122403884510025189232513948002582716865201271569293297601525601586036713056700716929820641888489806178376555435219630186396004003438962, 6525051273399089095687950615197786094425890004112675057642687348101531212837185750558500720306108976630502328600886080197626115513445112562084719104488315, 12922888505610354933000354792496863801007995464403098763485264334670452387681468617068312646367483171083114539083453125614861357751571161533921864394641576, 9489726784141062031514945333087338495823600723655465328127755755022980083351477888038160719541864899912899592065620071698977397662002448273876711116012763, 10630316198843195148937849513165933809121991192035364160395429088101265852052098101114542104327663563661384303617672183366879116750889320604308038959012109, 12675564142993964272844760955973914547747654087592111324261755301551267959231076883765863344473167582531968290671984039948163579495803204811731286282708940, 11847724105274460405216443356582445218232627275228120716891711887600046501095390733716854871561352002320819466803698088448952127166615410820121973485089326, 5131676593756685549522564504727003861447389891839469018437277330988047271086971907217360711863971849879439418231726349935396008040776952541710218842744018, 8049060452950901277510497437779182190254362319091882684392717180429468875432078713802857488901441344429723298843967365750616860588029426099852763482179470, 2365060249260571713545479629411006471094806409182638354076861269679377537605360223984548798658469783472746989448405310909017645138161178501458084966625559, 7467521246204465304438401242342633361751371318557249418344587207503257890765643838557008735305668588521988487342275527781708126255070883848829062790678347, 5841608816993144092409175658260479687582056537041472535819914412630519543198558564258699185557903902095773598614097026740427138629173672250387442834578787, 3935779917509948624841228665498558015416911059417306651751360048412619176423173794541812556512582747588138532941031730797102738268660078594473168666677171, 1459083415233950534805962555425717865938763752937036513111696179351002303817986848490146888626704327653287774806488952733813718461674376764427084478395399, 6426876689549337938550615491086475536072547585103523407263007393570982327518298678278232288342601754164640081474537962710401178482959474762541185760732929, 5241364650650467046722868257809607948071188801137204831449976666385482519613365369974704486723941517654753205012497273820309153659423928739972270634209996, 6387483223002092292686097811446217867743566298067033295601210265979889577756648605354064672061975949925472022416479935990178719227937307079186916383092053, 170562164015232424518655058158727202269056868720093972639058422975773575660534168774299548952867348396798580779605954510297102765330549642318362861226163, 10004133230245713370426176448219282796530473722412487408402635996842671302539458739305597027107498342509248085998067976408732789438099488867425813748783724, 12325342879747412722323355648741345730921040452129462974449188258885453690169624888480720109964630270938743431623479816739889661554987977051169401841580388, 641543989928732942291347866597230552820621633110802944556141221591498546555080480758772801043509130524233886009444044150447511986129019395067102094826363]
B = [108715652691370707411987210267535348806, 131676833696101475747102644851662113271, 122436706338521558335484593966234623745, 255864866572301552398412638474857375629, 81098761191414480003681301866161112100, 322322463176364397336266169283851913620, 198167679309202772183020662350938553923, 326360662842236388778385468938922853242, 241812832858991643670485138860832357660, 69768236619183466076110136290750715548, 32383134960394164339076842474280712870, 147747232748027508904245311745435517130, 25327826075608705748116808975774398964, 65295332681674581261444632606267440749, 236756211690281667988216748814564193312, 106435149910135092172124474857722935730, 270727089812520941022075406571244846193, 206881193220261276126028739930244917728, 131961838897694897398340205404861333362, 219211823942216355573832791993673934321, 150960424777134558142309786444952807101, 51112048255939343109218372373173385772, 182065623911902509203036774197184164110, 168420344895532090057957641972492853410, 301808673225362418769168353084541667053, 132272458662433671393247350648662880688, 495672626901999558635736361346563007, 182444159345379042372018248514964944782, 144584137563407779776361378564517880036, 338518705859818740467225748906995999694, 205885429741815676881969528495365151019, 233897982464483450790005953366237992668, 279307677123402840425362992920185630901, 133493426228159673166382443820069696429, 316624110847744871475435405969944304329, 187931604382397525131117897387179435812, 220019728924915067987393012581921164417]
enc = b'cTmkMb\xfc\x05|\x1d\xc7\x13\xbaSe\xe0\xbd\xc0\xd9\xa3\x8cwo\x82yN[B&\x80\xd7KPwQ`\x9c\xbf<y\x8e\x8a\x97e\xa074\xb2'

# 第一部分
# ns = [38630062416586710341458654419912504176237737247477839749085033080367529539859992076587411537805430366799412095876782912512744262957062106155418341531142309858429218208463637096843365217114990765965110566415965985105403996944993619708417839598461935470469097206342256014086162845948208599334925650727933097059538199199685364793545286980392966271769914201657672004082101110775504946586957241075964270454872257405872181588544468173017149763827540561921126826597515171761064800381983526515300315517818122598179574900255685121991744205071544970, 41522753602903133841910260331594875922287719226997542592715810409935551768308104573333760854332533376702631593490915962706512143045107096658851885513727202513616813054397657610854303071682604806070009002234312854968365250748142324994926715544722158698813288131533399544263105858513134170084625526223987620550110255872688155827773099232631041345207194483609514502522566888883736218471849075697433311580004701384847571029783514418685068903758509270527252444771313048094566344002411364378658592832008194309873599342916391769027015343562030852, 41542983120532762175372001624404625565366126179958909731196555044290633581761361918706298428954501507557598076910710787422049443564800530253137695341299743714514361560156305534490483794181933110893966453220306980682146624294992100948497284459992930850081254114996830645068636306625330524465991656430799359422407117440063911943625477783216502523414967017151717597372146324488526509879620785458016456593044828784565522423332830549325397893426472247197776412026158371655860380929692662547882654137064941217130915364306358205055760044763651406, 42853015443318352230776688785915441259875645365236808434164117288657978345098324019250085686482568413223085548506789311679316323466083886556772338612177680666217592255234589446979456714341877135596118517098603502394776049958587301113539552072352462301070489369653155854389890761241450743607560719433910573462283304103064437843063566946231984094581307498714742271881862348689297267558023093643893310002803310596286441071314219020032740336515363830250477649030557311461077069407775907176409762823453607196260454965048316567154365877848652918, 31152961872836435078296602982779340735140569916125711058616435902653202922218293684857125091648631460215120167354825278469413413558325850576700866199515219603448136082693185200558425103833947831228064760642508443585470729998592994719564254894176473779555436230174300038353978808432410463449170865897259181312953584408177790825688497584119467820716449210429423337019604137134889051973100340798405991782200038835066294194815913887924272593864934325496116821854183293510325217934617021428710898873475027666892706022106386340733691632884942848]
# x0,x1,x2,x3,x4 = ns
#
# B = matrix(ZZ,[[2^256,x1,x2,x3,x4],[0,-x0,0,0,0],[0,0,-x0,0,0],[0,0,0,-x0,0],[0,0,0,0,-x0]])
# L = B.LLL()
# ans= L[0][0] // 2^256
#
# p0 = abs(ans)
# p = (x0 // p0)
#
# key1 = long_to_bytes(int(p))[:32]

key1 = b'0b5e732a48fc8c6f5ac6366212d2bc59'
p = 293423658885957174953198318664231534672400520068303593221989900395768107225130267646792968959460384248015583618158947268381852534151783869878808621629530642974652628810907251607210136313789978156955302211733219987661815438401343683
ms,qs = [],[]
for i in ns:
    ms.append(i%p)
    qs.append((i - i%p)//p)

from extend_mt19937_predictor import ExtendMT19937Predictor
sh = ExtendMT19937Predictor()
for i in ms:
    sh.setrandbits(i,256)
for i in A:
    # print(i,i.bit_length())
    sh.setrandbits(i,512)
iv = long_to_bytes(sh.predict_getrandbits(128))
aes = AES.new(key1,AES.MODE_CBC,iv)
flag = aes.decrypt(enc)
print(flag)

LeakRsa

p^q Rsa_xor的高位泄露,我们需要从大到小进行深搜,有四个限定条件:

1、p^q = leak

2、p*q高位部分与n的高位部分相同

3、得到的p和q后面全部补0时小于n

4、得到的p和q后面全部补1时大于n

得到后我们使用coppersmith共计,250bit未知,可以使用爆破未知高位来尝试:

n=73822410148110759760164946405270228269255384237831275745269402590230495569279769799226813942899942423718229747478982630879557319063920515141217164980012063064986634632452289290326704640527699568662492105204165609614169349755365956569362139057327962393611139347462018186440108621311077722819578905265976612923
c=71808322808599218331233291542779486534747913572475630198802984648982830332628443972652322590637382696027943799004331488098592525306523343649935216419522329722152742610560398216737030893090641493326477786720839849938277402743820773957184083430369443325368720115515840174745825798187125454448297155036065857691
leak=2223117424030234543005449667053988296724455736030907136592525175314696509716321
e = 65537

leak = bin(leak)[2:].rjust(262,'0')
from Crypto.Util.number import *
import gmpy2
from tqdm import tqdm

# def xor(a,b):
#     tmp = ""
#     for i,j in zip(a,b):
#         tmp+=str(ord(i)^ord(j))
#     return tmp
#
# p='1'
# q='1'
#
# P=[p]
# Q=[q]
# for i in range(261):
#     PP=[]
#     QQ=[]
#     for a in '01':
#         for b in '01':
#             for pnew,qnew in zip(P,Q):
#                 pnew = pnew+a
#                 qnew = qnew+b
#                 tmp = int(pnew,2)*int(qnew,2)
#                 #print(tmp)
#                 if xor(pnew,qnew) == leak[:2+i] and  tmp>>(tmp.bit_length()-i//2)== n>>(n.bit_length()-i//2) and (int(pnew.ljust(512,'0'),2)*int(qnew.ljust(512,'0'),2) < n)  and (int(pnew.ljust(512,'1'),2)*int(qnew.ljust(512,'1'),2) > n) :
#                     PP.append(pnew)
#                     QQ.append(qnew)
#     print(len(P))
#     P = PP.copy()
#     Q = QQ.copy()
# print(P)

# P = ['1000001000011100010101010110000111101011000100111100000111111100011001101101101110100111101010111011001100111101001100010011110010100000001100010100110110000110000100101000111110110000101100100010111111001101001000001001111101111010000011111000101010100100000010', '1100111011010111101010100001110101111111100110111010101010011101100000101101010010101000010011001110110001011011011010000000100000111100111011101111100011110110111000000101100100101100100011111110011000101011011010100011001010101100111000100100110011001101000010', '1000001000011100010101010110000111101011000100111100000111111100011001101101101110100111101010111011001100111101001100010011110010100000001100010100110110000110000100101000111110110000101100100010111111001101001000001001111101111010000011111000101100010000100010', '1100111011010111101010100001110101111111100110111010101010011101100000101101010010101000010011001110110001011011011010000000100000111100111011101111100011110110111000000101100100101100100011111110011000101011011010100011001010101100111000100100110101111001100010', '1000001000011100010101010110000111101011000100111100000111111100011001101101101110100111101010111011001100111101001100010011110010100000001100010100110110000110000100101000111110110000101100100010111111001101001000001001111101111010000011111000101100010000001010', '1000001000011100010101010110000111101011000100111100000111111100011001101101101110100111101010111011001100111101001100010011110010100000001100010100110110000110000100101000111110110000101100100010111111001101001000001001111101111010000011111000101010100100000011', '1100111011010111101010100001110101111111100110111010101010011101100000101101010010101000010011001110110001011011011010000000100000111100111011101111100011110110111000000101100100101100100011111110011000101011011010100011001010101100111000100100110011001101000011', '1000001000011100010101010110000111101011000100111100000111111100011001101101101110100111101010111011001100111101001100010011110010100000001100010100110110000110000100101000111110110000101100100010111111001101001000001001111101111010000011111000101100010000100011', '1100111011010111101010100001110101111111100110111010101010011101100000101101010010101000010011001110110001011011011010000000100000111100111011101111100011110110111000000101100100101100100011111110011000101011011010100011001010101100111000100100110101111001100011', '1100111011010111101010100001110101111111100110111010101010011101100000101101010010101000010011001110110001011011011010000000100000111100111011101111100011110110111000000101100100101100100011111110011000101011011010100011001010101100111000100100110011001101101011']
#
# for i in tqdm(P):
#     p = int(i,2)<<5
#     P.<x> = PolynomialRing(Zmod(n))
#     for i1 in range(32):
#         print(i1)
#         p += i1
#         f = (p<<245) + x
#         f = f.monic()
#         x0 = f.small_roots(X = 2^245,beta = 0.47,epsilon=0.02)
#         if x0:
#             print('---------------------------------------------')
#             print(x0[0],x0[0] + (p<<245))

p = 6814449132912466352143200200256605077873329465758477832056090562012411200107156482645933890997787435093806046493913273252717701817613907418845774345791241
q = n//p
d = inverse(e,(p-1)*(q-1))
print(long_to_bytes(pow(c,d,n)))

Neltharion and Arthas

一段CRT加上一段CBC问题:

CRT问题我们知道两组,且开始时的计数器是相同的(两组iv全部相同),flag1的前一部分是已知的('2023: flag{'),且加密后的密文我们是已知的,得到的一部分iv可以解出gift对应的部分为'I am Deathw',搜索之后是一段台词,大致猜出gift的前一部分即可将flag1全部还原。

CBC问题中,由于key2 = b'tn*-ix6L*tCa*}i*'存在部分未知问题,由于明文后一部分都是pad的,使用我们可以使用爆破的方式将其还原,还原后,密文后42位已知,一直往前反推导出iv即可。

import binascii
import hashlib
from flag import flag
from Crypto.Cipher import AES
from Crypto.Util import *
import os

key1 = os.urandom(32)
key2 = b'tn*-ix6L*tCa*}i*'
key_len = len(key2)
assert flag.startswith(b'flag{')
assert (flag[13] == 45 and flag[18] == 45 and flag[23] == 45 and flag[28] == 45)
flag1 = b"2023: "+flag[:13]+flag[14:18]+flag[19:23]
flag2 = 

h = binascii.unhexlify(hashlib.sha256(key2).hexdigest())[:11]
gift1 = b'***********************************************************************************************'
gift2 = b'I tell you this, for when my days have come to an end , you, shall be King.'+h

def encrypt1(message, key):
    cipher = AES.new(key, AES.MODE_CTR, counter=Counter.new(128))
    ciphertext = cipher.encrypt(message)
    return ciphertext.hex()


def encrypt2(message, key, iv):
    padding = bytes((key_len - len(message) % key_len) * '&', encoding='utf-8')
    message += padding
    cipher = AES.new(key, AES.MODE_CBC, iv)
    ciphertext = cipher.encrypt(message)
    return ciphertext.hex()


print("enc_gift1 = "+encrypt1(gift1, key1))
print("enc_flag = "+encrypt1(flag1, key1))
print("enc_gift2 = "+encrypt2(gift2, key2, flag2))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/125068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 预处理详解

目录 1.预定义符号 2.#define 2.1#define 定义标识符 2.2#define 定义宏 2.3#define 替换规则 2.4#和## 2.4.1# 的作用 2.4.2## 的作用 2.5 带有副作用的宏参数 2.6宏和函数的对比 对比 **2.7内联函数 2.8命名约定 3.#undef **4.命令行定义 5.条件编译 常…

AVL树性质和实现

AVL树 AVL是两名俄罗斯数学家的名字&#xff0c;以此纪念 与二叉搜索树的区别 AVL树在二叉搜索树的基础上增加了新的限制&#xff1a;需要时刻保证每个树中每个结点的左右子树高度之差的绝对值不超过1 因此&#xff0c;当向树中插入新结点后&#xff0c;即可降低树的高度&…

闪客网盘系统源码,已测试对接腾讯COS及本地和支付(支持限速+按时收费+文件分享+可对接易支付)- 修复版

正文概述 资源入口 支持对文件下载限速 对接易支付 推广赚钱啥的功能 源码非常的好 支持腾讯cos 阿里云cos 本地储存 远程存储 源码仅支持服务器搭建 php7.2 伪静态thinkphp 运行目录public 导入数据库 修改config目录下的database.php数据库信息 后台地址&#xff1a; 域名/ad…

如何在CentOS上安装SQL Server数据库并通过内网穿透工具实现远程访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;…

CLIP Surgery论文阅读

CLIP Surgery for Better Explainability with Enhancement in Open-Vocabulary Tasks&#xff08;CVPR2023&#xff09; M norm ⁡ ( resize ⁡ ( reshape ⁡ ( F i ˉ ∥ F i ‾ ∥ 2 ⋅ ( F t ∥ F t ‾ ∥ 2 ) ⊤ ) ) ) M\operatorname{norm}\left(\operatorname{resize}\…

文件包含 [ZJCTF 2019]NiZhuanSiWei1

打开题目 代码审计 if(isset($text)&&(file_get_contents($text,r)"welcome to the zjctf")){ 首先isset函数检查text参数是否存在且不为空 用file_get_contents函数读取text制定的文件内容并与welcome to the zjctf进行强比较 echo "<br><h…

【C++】类型转换【4中类型转换】

目录 1. C语言中的类型转换 2. C的四种类型转换 2.1 static_cast 3.2 reinterpret_cast 3.3 const_cast 3.4 dynamic_cast 3. explict 4. RTTI&#xff08;了解&#xff09; 1. C语言中的类型转换 在 C 语言中&#xff0c;如果 赋值运算符左右两侧类型不同&#xff0…

如何用Excel做最小二乘法②

因为在Excel里面做最小二乘法是需要用到LINEST函数的&#xff0c;所以如果不知道怎么对数据进行最小二乘法时&#xff0c;就应该研究一下LINEST函数。 LINEST 函数语法 LINEST(known_ys, [known_xs], [const], [stats]) known_ys (必须) 因变量&#xff0c;单行/单列known_xs…

xxl-job 原理

一、xxl-job 架构设计 总体分两个部分&#xff1a; 调度中心&#xff1a;负责管理调度信息&#xff0c;按照调度配置发出调度请求&#xff0c;自身不承担业务代码。调度系统和任务解耦&#xff0c;提高了系统可用性和稳定性。通调度性能不在受限于任务模块。执行器&#xff1a…

Mysql配置主从复制-GTID模式

目录 主从复制 主从复制的定义 主从复制的原理 主从复制的优势 主从复制的形式 主从复制的模式 主从复制的类型 GTID模式 GTID的概念 GTID的优势 GTID的原理 GTID的配置 Mysql主服务器 ​编辑 Mysql从服务器 ​编辑 主从复制 主从复制的定义 是指把数据从一个…

Docker安装Mysql

Docker常用指令&#xff1a; docker search 镜像名&#xff1a;寻找镜像 docker pull 镜像名&#xff1a;拉去镜像 docker images :查看拥有镜像 docker ps :查看正在运行容器 docker pa -a &#xff1a;查看所有容器&#xff08;包含运行中的和停止的&#xff09; dock…

案例 - 拖拽上传文件,生成缩略图

直接看效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>拖拽上传文件</title>&l…

Python 实现动态动画心形图

在抖音上刷到其他人用 matlab 实现的一个动态心形图&#xff0c;就想也用 Python 实现&#xff0c;摸索了两种实现方式&#xff0c;效果如下&#xff1a; 方法一&#xff1a; 利用循环&#xff0c;结合 pyplot 的 pause 与 clf 参数实现图像的动态刷新 import matplotlib.p…

【漏洞复现】weblogic-10.3.6-‘wls-wsat‘-XMLDecoder反序列化(CVE-2017-10271)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描nacsweblogicScanner3、漏洞验证 说明内容漏洞编号CVE-2017-10271漏洞名称Weblogic < 10.3.…

【Unity细节】VS不能附加到Unity程序中解决方法大全

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

物联网AI MicroPython学习之语法 二进制与ASCII转换

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; ubinascii 介绍 ubinascii模块实现了二进制数据与各种ASCII编码之间的转换。 接口说明 a2b_base64 - 解码base64编码的数据 函数原型&#xff1a;ubinascii.a2b_base64(data)注意事项&#xff1a; 在解码…

GPT-4-Turbo的128K长度上下文性能如何?超过73K Tokens的数据支持依然不太好!

本文原文来自DataLearnerAI官方网站&#xff1a;GPT-4-Turbo的128K长度上下文性能如何&#xff1f;超过73K Tokens的数据支持依然不太好&#xff01; | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051699526438975 GPT-4 Turbo是OpenAI最新发布的号称…

【MongoDB】索引 – 文本索引

一、准备工作 这里准备一些数据 db.books.insertMany([{_id: 1, name: "Java", description: "java 入门图书", translation: [{ language: "english", description: "java basic book" }]},{_id: 2, name: "C", descript…

Vue2 基础语法

学习视频 bilibili 动力节点 老杜Vue视频教程&#xff0c;Vue2 Vue3实战精讲&#xff0c;一套通关vue【动力节点】 Vue2学习笔记 Vue程序初体验1 实例与容器只能是一对一的关系2 插值语法3 指令语法3.1 v-once 只渲染元素和组件一次3.2 条件渲染3.2.1 v-if 表达式的值决定标签是…

踩坑记录一

先呼自己两耳巴 临床采集的增强CT数据&#xff0c;有时候是同时采集了静脉期和动脉期。就会导致图像多一分如下&#xff1a; 但是勾画的时候&#xff0c;是以下面的期相进行标注的。所以在训练分割&#xff0c;对于这种案例&#xff0c;他识别到了在上面一个期相的目标位置&am…