*crypto*--2020年重庆市教育系统网络安全攻防竞赛

1.斐波那契

 就重新排列即可

2.rsa1dp泄露

from Crypto.Util.number import *
import libnum
import gmpy2

dp=84373069210173690047629226878686144017052129353931011112880892379361035492516066159394115482289291025932915787077633999791002846189004408043685986856359812230222233165493645074459765748901898518115384084258143483508823079115319711227124403284267559950883054402576935436305927705016459382628196407373896831725
n=22000596569856085362623019573995240143720890380678581299411213688857584612953014122879995808816872221032805734151343458921719334360194024890377075521680399678533655114261000716106870610083356478621445541840124447459943322577740268407217950081217130055057926816065068275999620502766866379465521042298370686053823448099778572878765782711260673185703889168702746195779250373642505375725925213796848495518878490786035363094086520257020021547827073768598600151928787434153003675096254792245014217044607440890694190989162318846104385311646123343795149489946251221774030484424581846841141819601874562109228016707364220840611
e=65537
c=14874271064669918581178066047207495551570421575260298116038863877424499500626920855863261194264169850678206604144314318171829367575688726593323863145664241189167820996601561389159819873734368810449011761054668595565217970516125181240869998009561140277444653698278073509852288720276008438965069627886972839146199102497874818473454932012374251932864118784065064885987416408142362577322906063320726241313252172382519793691513360909796645028353257317044086708114163313328952830378067342164675055195428728335222242094290731292113709866489975077052604333805889421889967835433026770417624703011718120347415460385182429795735

def solve(dp, n, e):
for i in range(1, e):
if ((e * dp - 1) % i) == 0:
temp_p = (e * dp - 1) // i + 1
if n % temp_p == 0:
p = temp_p
return p


p = solve(dp, n, e)
q=172752312328592624820203740864759781695743799410666998265780217233395427110343557002559899380499347155322034504624186688200558644773452887313745765534949614397043804397334009458504041075763421353984745778272625061206929646265927538923171329777117876902761816678106270946112638108943916135772001528126188051463
d=gmpy2.invert(e,(p-1)*(q-1))
m=pow(c,d,n)
print(m)
print(hex(m)[2:].decode('hex'))
#flag{d90a4bb43f64275794522dffdb4bd78b}

 这里有点bug求出p之后我单独求出q,得出m后转16进制再转字符串得到flag

3.rsa2

#-*- coding:utf-8 -*-
import gmpy2
from sympy import isprime

import libnum
from Crypto.Util.number import long_to_bytes

i=0
e=65537
c=121836624300974075697021410307617877799398704636412997043885070081959280989429720121505939271618801519845564677294487289085261071864489530938936756975266796724602572135614554790383740417604947122325421381322155502222532570899845171858215244411945889235509975121332503672838693190271397334662495169940649349725607212867270114445618201171582223868214171942753939282404133460110489725340075179818856587044172460703519751189284498768640898837525773823127259807337383870535232880471869465188882667401540052151795173003568424369575866780354852158304748299284900468768898966143729562589110027789165774068500360970335261801131264801996703446527156709491597639262305131309592217711956181866054589085773085822482247966030763162382493197473555330201343835684065991963179440335668817727280429581864224497755004825170263803174390985868997862117983334405815543271969716910040927833496696049703621334172902517666284662473059140662717708823
q3=7030777127779173206633582847346001157991477456002191926122836599155148909465054067800807615361108442560942058865403188672629297039703065927801771646334817871335134889139894648729527452541098449842202838983982508551750669662540615534327150829869964429006130891731472099912937717406120443380283548571270317421722042835639732966975812764084015221255115940508456442279902250677665136380988902682370875602145833135937210740790528756301051981994351553247852018355526641012434670664732924491790949235519600899289515495046353559475806935200029321563549553167235419039924276406059858659476329718809657072997385947262654743181242885709558209249589482036673428723035300722280229192727192487772217518673838209646300548275957450994828221329299666216457961746189885356929698674294944243729739850927111231235060005119781652245234537583181232715964191675241206562888107252569566488402724441835466680342239244581162530424964324562530832713397
p3=3639847731266473012111996909765465259684540134584180368372338570948892196816095838781423020996407457408188225238520927483809091079993151555076781372882518810174687150067903870448436299501557380508793238254471833275507634732947964907461619182112787911133054275872120243558556697900528427679352181961312958660881800731678134481664074711076672290178389996403357076809805422591851145306425951725627843352207233693810474618882394140691334742086008967260117740486955640068190440609984095657695423536016475468229419187489359563800737261212975921663803729112420222039005478830477455592167092520074509241894829304209406713781082959299623674294927249556083486223036858674077173104518013601628447504500606447821540687465361616447631579976579754996021653630804073535352129315413118764836270751250405649683786487251823247828947202336680538849571498780353357272103697510910576879383751704763858882439578045020243015928994208017750848637513
print(gmpy2.iroot(q3, 3))
p=153825288616407542734919511160359014401888182850314472769290928486517268729935022247316737053250308073746472804093669693357223174200482626309533529675828482194838951112584376667097776211803735802734163923995423953464212795474099182334274189325134694595476369758794997842329418616111329225615979898403815097817
while True:
i+=1
q = 5*p+i
if isprime(q) :
print(q)
break

q=769126443082037713674597555801795072009440914251572363846454642432586343649675111236583685266251540368732364020468348466786115871002413131547667648379142410974194755562921883335488881059018679013670819619977119767321063977370495911671370946625673472977381848793974989211647093080556646128079899492019075489799
r=172100274115478575309196269518046673879412746324567097202620155069265214182504514601335934052190154778918597842385492003388321211833951222153883339420662475340363557500688267338730705495981338628403224114959468142099052614682014066677165338488413386946714413594699276655927013173968768943486750934756157707677
d = libnum.invmod(e, (p - 1) * (q - 1)*(r-1))
n= 20361372240024088786698455948788052559208001789410016096382703853157107986024860262721685000417719260611935731634077852127432140361792767202581631816544546972750034494061276779878409544779707914261679633764772575040304712361634318086289783951555842021028438799649252652041211341825451500751760872572402250747982495384263677669526575825183733353800694161425360299521143726681387485097281832219009682768523304737252763907939642212542959846630464628135025203489075698699980715986689341069964387779523254203021424865355054215122316160201073604105317768112281914334065349420946717116563634883368316247495042216330408372176714499012778410160478384503335610321108263706243329745785632599707740534386988945259578897614317582546751658480917188464178997026284336861027299289073045677754342746386408505695243800685323283852020325044649604548575089927541935884800327121875191739922436199496098842684301207745090701158839031935190703347091
m = pow(c, d, n) # m 的十制形式
string = long_to_bytes(m) # m明文
print(string) # b‘ m ’ 的形式

原文地址:https://www.cnblogs.com/kubopiy/p/13642642.html