六校梦幻联赛Crypto

1.热乎的签到题

题目

from Crypto.Util.number import *



def getprime(kbit,FLAG):
    a = getPrime(kbit)
    b = getPrime(kbit)
    N = getPrime(kbit+5)
    seed = getPrime(kbit)
    t = seed
    list_t = []
    for i in range(10):
        t = (a*t+b)%N
        list_t.append(t)
    if FLAG:
        print(list_t)
    return seed



p = getprime(512,1)
q = getprime(512,0)
flag = b'HYNUCTF{this_fake_flag_hahaha_broken!!}'
flag = bytes_to_long(flag)
n = p*q
e = 1384626

assert flag.bit_length() < n.bit_length()//2

c = pow(flag,e,n)
print(p)
print(q)
print(gcd(e,p-1))
print('c=',c)
'''
[127523137399433777427795601864654281402919374127165073344817368328658008320033800515923189671444215119120520959462791894669904216772467483324708763369634708, 372027366011484292618186302754093501005871652650971297282881129309898785268985308064430721567637576550965498412980466463361384493265436120378812552919898966, 348035642580267660348669261308358115512536348205129306184920894474984598262610209861887408758203716298857622773360934430287199265277206118811982444387978720, 249050055622758943406682979064710064474396599254562062715885715612134329295711268027262960524036390456125828477063013354584387761193996026706235939023506618, 277649520866440053271183816530401802180223712419785652472252959501302357709182635395368200155554398057358700199277791328081434198155798272453605567597146705, 113353476746755034472020731261464205374689709545726337501602938288863344743642072138953779633489923746309667419315664188497923119459200816050535630009409524, 14061355969759861682619333416287503623684647773107415365226702784650119612238192269157961447985603377452932403064274140241773146302968944529626491134265551, 47731787268612444401839778049672376334592274566906224065406920145938058316072324523363056558155980318340775312842875933091571494392965607397695106272482621, 335603075208855370652519345960378135094989412547336517377159098408114877551841198885501072449517982538070467226179815356097479415171188152893250177926027689, 291573673728809469821691288150633718130176377799936915794341801720191990155933511914358419579272913402472202948501015393795401540811347141399756296392462344]
c= 45112064476062412057721252889520398847507622955419737481708266517759868073774655382676020377225449928517225127190076545137729448061419433846015718857997816792374074952420161330519812786094762081233727959793187234676198817849995396640350228891479809158616161638709354547982969447781865685057877550997967861332

'''

脚本

先求p,根据题目给的函数可知,p是LCG的原始seed,脚本如下

from Crypto.Util.number import *
def gcd(a,b):
    if(b==0):
        return a
    else:
        return gcd(b,a%b)
s = [127523137399433777427795601864654281402919374127165073344817368328658008320033800515923189671444215119120520959462791894669904216772467483324708763369634708, 372027366011484292618186302754093501005871652650971297282881129309898785268985308064430721567637576550965498412980466463361384493265436120378812552919898966, 348035642580267660348669261308358115512536348205129306184920894474984598262610209861887408758203716298857622773360934430287199265277206118811982444387978720, 249050055622758943406682979064710064474396599254562062715885715612134329295711268027262960524036390456125828477063013354584387761193996026706235939023506618, 277649520866440053271183816530401802180223712419785652472252959501302357709182635395368200155554398057358700199277791328081434198155798272453605567597146705, 113353476746755034472020731261464205374689709545726337501602938288863344743642072138953779633489923746309667419315664188497923119459200816050535630009409524, 14061355969759861682619333416287503623684647773107415365226702784650119612238192269157961447985603377452932403064274140241773146302968944529626491134265551, 47731787268612444401839778049672376334592274566906224065406920145938058316072324523363056558155980318340775312842875933091571494392965607397695106272482621, 335603075208855370652519345960378135094989412547336517377159098408114877551841198885501072449517982538070467226179815356097479415171188152893250177926027689, 291573673728809469821691288150633718130176377799936915794341801720191990155933511914358419579272913402472202948501015393795401540811347141399756296392462344]
 #这是一个数列
t = []
for i in range(9):
    t.append(s[i]-s[i-1])
all_n = []
for i in range(7):
    all_n.append(gcd((t[i+1]*t[i-1]-t[i]*t[i]), (t[i+2]*t[i]-t[i+1]*t[i+1])))

MMI = lambda A, n,s=1,t=0,N=0: (n < 2 and t%N or MMI(n, A%n, t, s-A//n*t, N or n),-1)[n<1] #逆元计算
for n in all_n:
    n=abs(n)
    if n==1:
        continue
    a=(s[2]-s[1])*MMI((s[1]-s[0]),n)%n
    ani=MMI(a,n)
    b=(s[1]-a*s[0])%n
    seed = (ani*(s[0]-b))%n
    plaintext=seed
    
print(seed)

#8913297541572451489681850241125435198496367998219235747544680296425503051448665603908927224906177036598415349677132128201618360045460860362631484250056741

然后我们求d,因为q没有生成seed列表,无法求q,所以我们直接利用p来求d(我们这里可以知道e和(p-1)不互素的,输出来的公约数是6,所以e//6)

from Crypto.Util.number import *
from gmpy2 import gcd, gmpy2

p = 8913297541572451489681850241125435198496367998219235747544680296425503051448665603908927224906177036598415349677132128201618360045460860362631484250056741
c= 45112064476062412057721252889520398847507622955419737481708266517759868073774655382676020377225449928517225127190076545137729448061419433846015718857997816792374074952420161330519812786094762081233727959793187234676198817849995396640350228891479809158616161638709354547982969447781865685057877550997967861332
e = 1384626
# print(gcd(e,p-1))
d = gmpy2.invert(e // 6, (p-1))
print(d)


 最后我们在模p的环域下,求我们需要的密文flag

from Crypto. Util. number import *
d = 1633022433744635370058406941057513293231933124026456042597159447820004545697897836960750887542339224197932153452336499735081202849240524919214542356242331
p = 8913297541572451489681850241125435198496367998219235747544680296425503051448665603908927224906177036598415349677132128201618360045460860362631484250056741
c= 45112064476062412057721252889520398847507622955419737481708266517759868073774655382676020377225449928517225127190076545137729448061419433846015718857997816792374074952420161330519812786094762081233727959793187234676198817849995396640350228891479809158616161638709354547982969447781865685057877550997967861332
e = 1384626

c = pow(c,d,p)

R.<x> = PolynomialRing (Zmod(p))
f = x^6-c

m = f.roots()

for i in m:

    if b'HYNUCTF' in long_to_bytes(int(i[0])):

        print(long_to_bytes(int(i[0])))

        break


#HYNUCTF{y0u_d0nt_see_me_d0nt_see_me_d0nt_see_me_}

2.这是啥?

题目

这些符合都是LaTeX里的,直接一个一个查找对应的单词就可以了(  ‘{’  和  ‘}’  不用找对应的单词),然后取单词的首字母大写作为flag。(  ' ^ '这个符号在图片里有两个,这两个是不一样的,但是这个符合在LaTeX有好几个不一样的,可以一个一个尝试,也可以把这两个位置进行一个A~Z的爆破,也可以得到flag)

hat
y
not
Upsilon
circ
times
f
{
Xi
Theta
prod
wedge
phi
psi
eth
leftrightarrow
therefore
spadesuit
} 

#flag已经告诉我们用HYNUCTF{}包裹了,可以直接找花括号里面的就可以,可以节省点时间

HYNUCTF{XTPWPPELTS}

3.Matrix

题目

flag = b'HYNUCTF{i_love_fake_flag!ha_ha_ha_ha}'
flag = bytes_to_long(flag)
d = getPrime(256)

for i in range(1,6):
    p = getPrime(512)
    q = getPrime(512)
    n = p * q
    e = gmpy2.invert(d, (p - 1) * (q - 1))
    print('c'+str(i)+'=',pow(flag,e,n))
    print('e'+str(i)+'=',e)
    print('n'+str(i)+'=',n)
'''
c1= 50659635008006469503221746723983468172751779559316478103021851226386523104728341126227074257731446183489747849606453444427754833084364129483827014817456153203638271636479020563558819814044205221084288844768040697535053156741845338010626442377883210694693345002428832014159479077259177922949420245136160362335
e1= 74692051017537381027718681423990228042180137742471671206601586775119227047580043735104673182607233217682610217393777549833347353019867427910233683567284367571811052440854879764920184738100621988956007638088559659181801810893464254371990070597078219248785853271330177966001168262599928496518429721748719820947
n1= 82550246167621986861676439061089430040170951358641728073255906835249577422382242069380157553544325176140309500018294948463514374178167316566462313875038446961798047903993821094714797367256494115978578531204242496316790274319099200979425553972802637846216127629486660403174087964679301767154362754480376718647
c2= 22367912056962757268092247104972069662090318829329782612110807348415136658398637392386237444176558404940445848691647909995517181486445398386094078664278623676432871685119422773232929476914337820430732769401405007515143608278601263100461089422187782518185169576616804690486043812512918694368095125606320809890
e2= 6954354523138357024768233568974913003618048954760053370620470119892579013004017816271912426674356351674855964372206870555784373736090745916925485006200136682770000155507443758024401128422880937550320682290619671900421965310586177882281307049492740325150628424130966362906975183188986616449542326132262437619
n2= 76334464063235277589278384529071895102382668732370575533390714522984680642140495308997985288991245136164447996676440439774416838877742637234836569449626506918821353195748650677219057070261686175547083081329190843688670287276368095561965260005164685218752180035377265755123612520420210359201408964970927840927
c3= 3169418454172188504316996400966574702881628314519276007759814248294504625658618492346719965409069991036041146097983336267681114471440651808810477308657912732216148012530014196489987766610140232941019642854419971263300974713643004380173808702658744311967857530882786710746223171506519248599949304893297079060
e3= 92850978485385901184234682577943639307481332104240742386306347163523692046411066032701295289274607204965653928047697988897402094558133063247650409362125961659131959458304435130662379528148645618325891254942514225154342677534857072100324104787793498522219146123459647861447190216644439672142160316012705136963
n3= 132730903652288288732809950917477579662058266507656608382831671629368175301855847933442895657912131933930751603817590173600722994183336609798035888377141695503343160273861935126514803624627163155157102978815028122091864976436491526086498418976472102581227327075447082563235340274876190444017691644131434439479
c4= 18374048702680090984787965327246876510968747395533229347755636890134681516578629254046064372748307803368986735599795706717557749953875074786068262826090962069315285375295431665989408634969909188350932784494198631578159181250681452028073018377602941601587467927163473026530680817351862403696643927065303074060
e4= 62802737248656396874739523634728408227594379606257730915225820928866512039257249474232129174088539638739599840230242109813256866495928951848247087593918292285268447019147801374636149586033463794344050294688366505566709893621067142478061367965400181761775335053180626108328862673000563031935788164823410503443
n4= 70035486118431157924499442434861883770337012737400485534241186313508057959767433392179804963973503311609886752848258736144722134902202498895892615671072585819085054293655012082864948346226436942389528795347442102035211173307377739068347247366851975479201007939855432494425733032404390779466806040199249132919
c5= 42951204446770751351705781677271074783431918727883781074437382979308808849567569795497146316778706036147087596951598865922203041343078033014141904799669738254361379160544457907451152321701522182407526118897903027562182019784986980696276821981146876726852768895548296614727319714276572231906571287028525950761
e5= 43995549244597235878041044522938086312116162143545417973997990468344243405505673623399472136402925948788240975999846905211726460120518292125009818921964012476665519680065527707915215669145286432661510411567735290731869959790937560327632073594726264636857746232234665327078793559065950147333407432106812180563
n5= 85127549391519596953615692340279789406694943210828568764270782092393517057877307438556396821492316343904069212357045394361275652084881111955138966843701652574109902972027569490529103776524539038741692687311109338180224363378864407751990899389328105464499662271614972346680417204114246081435370174860885673607

'''

 本题解法用到格,还没学,所以先记录一些脚本(虽然维纳攻击好像也可以解)

脚本

import gmpy2
from Crypto.Util.number import *
import gmpy2
c1= 50659635008006469503221746723983468172751779559316478103021851226386523104728341126227074257731446183489747849606453444427754833084364129483827014817456153203638271636479020563558819814044205221084288844768040697535053156741845338010626442377883210694693345002428832014159479077259177922949420245136160362335
e1= 74692051017537381027718681423990228042180137742471671206601586775119227047580043735104673182607233217682610217393777549833347353019867427910233683567284367571811052440854879764920184738100621988956007638088559659181801810893464254371990070597078219248785853271330177966001168262599928496518429721748719820947
n1= 82550246167621986861676439061089430040170951358641728073255906835249577422382242069380157553544325176140309500018294948463514374178167316566462313875038446961798047903993821094714797367256494115978578531204242496316790274319099200979425553972802637846216127629486660403174087964679301767154362754480376718647
c2= 22367912056962757268092247104972069662090318829329782612110807348415136658398637392386237444176558404940445848691647909995517181486445398386094078664278623676432871685119422773232929476914337820430732769401405007515143608278601263100461089422187782518185169576616804690486043812512918694368095125606320809890
e2= 6954354523138357024768233568974913003618048954760053370620470119892579013004017816271912426674356351674855964372206870555784373736090745916925485006200136682770000155507443758024401128422880937550320682290619671900421965310586177882281307049492740325150628424130966362906975183188986616449542326132262437619
n2= 76334464063235277589278384529071895102382668732370575533390714522984680642140495308997985288991245136164447996676440439774416838877742637234836569449626506918821353195748650677219057070261686175547083081329190843688670287276368095561965260005164685218752180035377265755123612520420210359201408964970927840927
c3= 3169418454172188504316996400966574702881628314519276007759814248294504625658618492346719965409069991036041146097983336267681114471440651808810477308657912732216148012530014196489987766610140232941019642854419971263300974713643004380173808702658744311967857530882786710746223171506519248599949304893297079060
e3= 92850978485385901184234682577943639307481332104240742386306347163523692046411066032701295289274607204965653928047697988897402094558133063247650409362125961659131959458304435130662379528148645618325891254942514225154342677534857072100324104787793498522219146123459647861447190216644439672142160316012705136963
n3= 132730903652288288732809950917477579662058266507656608382831671629368175301855847933442895657912131933930751603817590173600722994183336609798035888377141695503343160273861935126514803624627163155157102978815028122091864976436491526086498418976472102581227327075447082563235340274876190444017691644131434439479
c4= 18374048702680090984787965327246876510968747395533229347755636890134681516578629254046064372748307803368986735599795706717557749953875074786068262826090962069315285375295431665989408634969909188350932784494198631578159181250681452028073018377602941601587467927163473026530680817351862403696643927065303074060
e4= 62802737248656396874739523634728408227594379606257730915225820928866512039257249474232129174088539638739599840230242109813256866495928951848247087593918292285268447019147801374636149586033463794344050294688366505566709893621067142478061367965400181761775335053180626108328862673000563031935788164823410503443
n4= 70035486118431157924499442434861883770337012737400485534241186313508057959767433392179804963973503311609886752848258736144722134902202498895892615671072585819085054293655012082864948346226436942389528795347442102035211173307377739068347247366851975479201007939855432494425733032404390779466806040199249132919
c5= 42951204446770751351705781677271074783431918727883781074437382979308808849567569795497146316778706036147087596951598865922203041343078033014141904799669738254361379160544457907451152321701522182407526118897903027562182019784986980696276821981146876726852768895548296614727319714276572231906571287028525950761
e5= 43995549244597235878041044522938086312116162143545417973997990468344243405505673623399472136402925948788240975999846905211726460120518292125009818921964012476665519680065527707915215669145286432661510411567735290731869959790937560327632073594726264636857746232234665327078793559065950147333407432106812180563
n5= 85127549391519596953615692340279789406694943210828568764270782092393517057877307438556396821492316343904069212357045394361275652084881111955138966843701652574109902972027569490529103776524539038741692687311109338180224363378864407751990899389328105464499662271614972346680417204114246081435370174860885673607

M = isqrt(n5)
A = [M,e1,e2,e3,e4,e5,0,-n1,0,0,0,0,0,0,-n2,0,0,0,0,0,0,-n3,0,0,0,0,0,0,-n4,0,0,0,0,0,0,-n5]
L = matrix(ZZ,6,6,A)
f= L.LLL()[0]
d = int(f[0])//int(M)
print(d)
flag = pow(c1,int(abs(d)),n1)
print(long_to_bytes(int(flag)))

#HYNUCTF{crypt0_get_out!!!!!I_hate_it!}

4.EZCRT

题目

import gmpy2
from Crypto.Util.number import *
import gmpy2
p_list = [getPrime(512) for i in range(2*2)]
n_list = [p_list[i]*p_list[i+1] for i in range(0,4,2)]
e1 = getPrime(256)
e2 = getPrime(256)
flag = b'HYNUCTF{I_M_Cute_Fake_flag_BangBangBang!!}'
flag =bytes_to_long(flag)


a = int(pow(flag,p_list[0]*e1,n_list[0]))
b = int(pow(flag,2*p_list[2]*e2,n_list[1]))


x = int(pow(flag,3*p_list[1]*e2,n_list[0]))
y = int(pow(flag,4*p_list[3]*e1,n_list[1]))


gift1 = crt([a,b],[n_list[0],n_list[1]])
gift2 = crt([x,y],[n_list[0],n_list[1]])

n1 = n_list[0]
n2 = n_list[1]

N = n1*n2
N = N>>886<<886


print('N =',N)

print('e1 =',p_list[0]*e1)
print('e2 =',2*p_list[2]*e2)
print('e3 =',3*p_list[1]*e2)
print('e4 =',4*p_list[3]*e1)

print('gift1 =',gift1)

print('a =',a,'b =',b)
print('x =',x,'y =',y)

'''
N = 19987046558754986291422515584888196781418541349388725274870844351524319087776891755717147902222281144036440708207716729742305638485808878923889543319231241282459617503656750707904306549390625962954111988566070528354709700507996947465020335524722563056772317867889068641320222099001533856080728321518687438677513545841686834316085059903310733218759461570114390733405321130810267155423063565979575716379127820503790338195521939590246513214380239202123303669766320745170412632865272713058332115414273186094101467045615345331062934822970165886741454415713005233229609278793581994071231241783959892130061162261236928217088
e1 = 1193600532278764040793547898951387687124654072292606016874010787057600060172022090975169647560529652085061473461065575170939937076046650668254712304859260522791864220031652754068799860195802338759544367273416748216198823230635994053
e2 = 1528214755117977321659373986071792093762146380625359056212320336153568286226642786160376983653769718956565195890531469219331936785612943646283659067959993403427909924240681196981482854130707231006734564425022468131177676602949148502
e3 = 2514810674110128527473695254898968308582331221679018723321064997888597311934558874788293007107031392281420512411041159852931969238503230482348210703808029374931178388972471751453207435087826505560091566013063730692033056681326090873
e4 = 4314942669659813591735961186922520571594727530505772514328387798912045959752686708546399068663409935056828343820736192849208854641992262328764192135304459878136604528405614384390080480129393003696412191959629443754793207189197131996
gift1 = 3600916279295419166667047924324235285874212567522120039718872786764699762485456466566554824938385061506061189422660997074277636585165027686409576240081587364558919580573734417733501652495970151465157199501986225211225309083010823805215622189452224086414034159910714798712223106876566011321869818522082897301471602253410612777000123580150521624850658728178286439728260332160911344267533664943879290838122653466332130041512090925937846197157440379061881131101935230899545053576662964417471085757589050181206179284333964623524292955323376580429196530811834686335184159370704453902590312943080544092093965992288631581454
a = 33848129410084683211798207373357823582039791496507291413102222754832365069652293205153574527286684573328195259707481170886898097215319281536263050561947112608156827457866086354889129331495718476314881705853679369618174538634697081049705683168031840885886849089509523945460618426501045778069760606014438409402 b = 60608800691813404668255114711103409191256388238476965540351783815623109229661917418958625031415488381443953242790440383646774239506375657979188211180854226778536018347210870786973347979503044693888404259633164265709304161006768279161295404016260332088699640824189584437783397144881867375226066340511060167038
x = 33930488959833567655506660853214582299036684723196622559314200477350032747721810352400349334415735398013345157964772258546235240008015282370011669464700768921429606501214107350763771926985757449913884813470687358441602702966034570539678799423047131321073715168483490167806191418451606940842007151784274508816 y = 86926272000713466870671737012216270686933563120336828673463903778242301700416307647545185857621973672901607605794449861321589914583688614990499410581284049355826361247519513004254889020442793230688507575999379353457573889153949252301511177843704023184918577233280774494920375446841664190297806897655019674445
'''

本题a代表c1,x代表c2

推导过程

gift = crt([a,b],[n1,n2])\\ gift\equiv c1 \mod n1\\ gift\equiv c2 \mod n2\\ gift -c1= k1*n1\\ gift -c2= k2*n2\\ =>K*N\\ N = n1*n2\\n1=gcd(gift - c1, N)\\

脚本

先求出n

import gmpy2
from Crypto. Util. number import *
import gmpy2
N = 19987046558754986291422515584888196781418541349388725274870844351524319087776891755717147902222281144036440708207716729742305638485808878923889543319231241282459617503656750707904306549390625962954111988566070528354709700507996947465020335524722563056772317867889068641320222099001533856080728321518687438677513545841686834316085059903310733218759461570114390733405321130810267155423063565979575716379127820503790338195521939590246513214380239202123303669766320745170412632865272713058332115414273186094101467045615345331062934822970165886741454415713005233229609278793581994071231241783959892130061162261236928217088
e1 = 1193600532278764040793547898951387687124654072292606016874010787057600060172022090975169647560529652085061473461065575170939937076046650668254712304859260522791864220031652754068799860195802338759544367273416748216198823230635994053
e2 = 1528214755117977321659373986071792093762146380625359056212320336153568286226642786160376983653769718956565195890531469219331936785612943646283659067959993403427909924240681196981482854130707231006734564425022468131177676602949148502
e3 = 2514810674110128527473695254898968308582331221679018723321064997888597311934558874788293007107031392281420512411041159852931969238503230482348210703808029374931178388972471751453207435087826505560091566013063730692033056681326090873
e4 = 4314942669659813591735961186922520571594727530505772514328387798912045959752686708546399068663409935056828343820736192849208854641992262328764192135304459878136604528405614384390080480129393003696412191959629443754793207189197131996
gift1 = 3600916279295419166667047924324235285874212567522120039718872786764699762485456466566554824938385061506061189422660997074277636585165027686409576240081587364558919580573734417733501652495970151465157199501986225211225309083010823805215622189452224086414034159910714798712223106876566011321869818522082897301471602253410612777000123580150521624850658728178286439728260332160911344267533664943879290838122653466332130041512090925937846197157440379061881131101935230899545053576662964417471085757589050181206179284333964623524292955323376580429196530811834686335184159370704453902590312943080544092093965992288631581454
a = 33848129410084683211798207373357823582039791496507291413102222754832365069652293205153574527286684573328195259707481170886898097215319281536263050561947112608156827457866086354889129331495718476314881705853679369618174538634697081049705683168031840885886849089509523945460618426501045778069760606014438409402 
b = 60608800691813404668255114711103409191256388238476965540351783815623109229661917418958625031415488381443953242790440383646774239506375657979188211180854226778536018347210870786973347979503044693888404259633164265709304161006768279161295404016260332088699640824189584437783397144881867375226066340511060167038
x = 33930488959833567655506660853214582299036684723196622559314200477350032747721810352400349334415735398013345157964772258546235240008015282370011669464700768921429606501214107350763771926985757449913884813470687358441602702966034570539678799423047131321073715168483490167806191418451606940842007151784274508816 
y = 86926272000713466870671737012216270686933563120336828673463903778242301700416307647545185857621973672901607605794449861321589914583688614990499410581284049355826361247519513004254889020442793230688507575999379353457573889153949252301511177843704023184918577233280774494920375446841664190297806897655019674445

kn=(gift1-a)*(gift1-b)
g=886
R.<x> = PolynomialRing(Zmod(kn))
f=N+x
k = f.small_roots(X=2^g,beta=0.4)[0]
n1n2 = int (N+k)
print (gcd(n1n2 ,gift1-a))


#n=155761857792057467548355913435295218781867902215424993639946657107396132371729669367476020574334020048676574474459721205508534013648253532342273815756042288098950346749382499329199406998276791627086191259681095852165764070149666393203118381609535468706283273816663966395716829390940216259353657811456615724043

最后计算一个共模攻击就能得到flag 

import gmpy2
from Crypto.Util .number import *

e1 = 1193600532278764040793547898951387687124654072292606016874010787057600060172022090975169647560529652085061473461065575170939937076046650668254712304859260522791864220031652754068799860195802338759544367273416748216198823230635994053
e3 = 2514810674110128527473695254898968308582331221679018723321064997888597311934558874788293007107031392281420512411041159852931969238503230482348210703808029374931178388972471751453207435087826505560091566013063730692033056681326090873

c1 = 33848129410084683211798207373357823582039791496507291413102222754832365069652293205153574527286684573328195259707481170886898097215319281536263050561947112608156827457866086354889129331495718476314881705853679369618174538634697081049705683168031840885886849089509523945460618426501045778069760606014438409402
c2 = 33930488959833567655506660853214582299036684723196622559314200477350032747721810352400349334415735398013345157964772258546235240008015282370011669464700768921429606501214107350763771926985757449913884813470687358441602702966034570539678799423047131321073715168483490167806191418451606940842007151784274508816

n=155761857792057467548355913435295218781867902215424993639946657107396132371729669367476020574334020048676574474459721205508534013648253532342273815756042288098950346749382499329199406998276791627086191259681095852165764070149666393203118381609535468706283273816663966395716829390940216259353657811456615724043
s = gmpy2.gcdext(e1, e3)
print(s)
s1 = s[1]
s2 = s[2]
m = (pow(c1, s1, n)*pow(c2, s2, n)) % n
print(m)
flag = long_to_bytes (m)
print(flag, end='' )

b'HYNUCTF{M1x_And_St1r_Happy_Game_!_!_!}'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值