from Crypto.Util.number import* number1=11488359375916816818731868252559119400126174593041608170883818546254791846479664455120194350355087017477744828351806157930199157462913063513512421460678471 result=1890846045246997191702622225497063073251667816125412875121879991742654650976309481716690792328873189601779812108551290078049710826355501933349874438201643986975141068179879506727213209273645848165732801667704040761771 flag=result//number1 print('HSCSEC'+str(long_to_bytes(flag))[6:]) #HSCSEC{qMmZqWvmj70bBsCfmVLT}
EZRSA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
from Crypto.Util.number import * import gmpy2 from flag import m
p = getPrime(1024) q = getPrime(1024) n = p * q print('n =',n) e = 0x10001 M = m * e * 1 * 2022 * p c = pow(M,e,n) print('c =',c)
# n = 16266043783454053154037197753138388613864200794483663334493856481522764684650995230938142916968470804276539967429581472897698022852787399956166067156691430593337430691851251036378709799238876668312530223697905925939542713491015517460139150765778057817475571231361809654951289718071760502692960235551663466242938669673675870151921605230499603814070711617511206013584605131901906195136038060653121164252894949526861390984185085201067988694831398388037080993820517447099157891181179389949333832439004857436617834100885739716577641892686620423154860716308518151628754780994043553863224363539879909831811888663875989774849 # c = 12716190507848578560760116589677996073721225715245215495257947887969923319693501568134141757778665747980229898129090929698368855086594836111461700857934476682700625486249555753323344759513528101651108919161794915999809784961533946922607642974500946026677116418317599095703217004064379100607278317877894742815660315660254853364776654303066021672567442581774299847661025422994141801987588151758971034155714424052693627277202951522779716696303237915400201362585413354036973117149974017434406560929491956957193491445847385625481870256240443170803497196783872213746269940877814806857222191433079944785910813364137603874411
1 2
M = m * e * 1 * 2022 * p c = pow(M,e,n)
这里猜测可以公约数求p
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import gmpy2 from Crypto.Util.number import * n = 16266043783454053154037197753138388613864200794483663334493856481522764684650995230938142916968470804276539967429581472897698022852787399956166067156691430593337430691851251036378709799238876668312530223697905925939542713491015517460139150765778057817475571231361809654951289718071760502692960235551663466242938669673675870151921605230499603814070711617511206013584605131901906195136038060653121164252894949526861390984185085201067988694831398388037080993820517447099157891181179389949333832439004857436617834100885739716577641892686620423154860716308518151628754780994043553863224363539879909831811888663875989774849 c = 12716190507848578560760116589677996073721225715245215495257947887969923319693501568134141757778665747980229898129090929698368855086594836111461700857934476682700625486249555753323344759513528101651108919161794915999809784961533946922607642974500946026677116418317599095703217004064379100607278317877894742815660315660254853364776654303066021672567442581774299847661025422994141801987588151758971034155714424052693627277202951522779716696303237915400201362585413354036973117149974017434406560929491956957193491445847385625481870256240443170803497196783872213746269940877814806857222191433079944785910813364137603874411 e = 0x10001 x=(c*gmpy2.invert(pow(2022,e,n),n)*gmpy2.invert(pow(e,e,n),n))%n #通过乘逆元然后求p,然后解RSA解出M p=gmpy2.gcd(x,n) q=n//p d=gmpy2.invert(e,(p-1)*(q-1)) M=pow(c,d,n) #然后接着还原flag m=M//e//2022//p print('HSCSEC'+str(long_to_bytes(m))[6:]) #HSCSEC{3e5e2789a93a80615cc35edbff397c05}
EZVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# -*- coding: utf-8 -*- import flag alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~' key = 'HSC' assert flag.startswith('HSCSEC{') flag_num_list = [] c = [] for item in flag: flag_num_list.append(alphabet.find(item) + 1) key_num = alphabet.find(key) + 1 for i in flag_num_list: m = (i + key_num) % 94 - 1 if m == 0: c.append("□") c.append(alphabet[m-1:m]) print("c = {}".format(''.join(c)))
# c = GRBRDB`jg10ij2g01i,g201gi,2gi2,012igaigagi|
逆推一下就行
1 2 3 4 5 6 7 8 9 10 11 12 13 14
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~' key = 'HSC' c = "GRBRDB`jg10ij2g01i,g201gi,2gi2,012igaigagi|" flag = "" key_num = alphabet.find(key) + 1 for i in c: if i == "□": m = 0 else: m = alphabet.find(i) + 1 flag_num = (m - key_num) % 94 + 1 flag += alphabet[flag_num-1:flag_num] print("flag = {}".format(flag)) #flag = HSCSEC{kh21jk3h12j-h312hj-3hj3-123jhbjhbhj}