本文主要是介绍[SWPUCTF 2021 新生赛]crypto2(共模攻击),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
from gmpy2 import *
from Crypto.Util.number import *flag = '***************'p = getPrime(512)
q = getPrime(512)
m1 = bytes_to_long(bytes(flag.encode()))n = p*q
e1 = getPrime(32)
e2 = getPrime(32)
print()flag1 = pow(m1,e1,n)
flag2 = pow(m1,e2,n)
print('flag1= '+str(flag1))
print('flag2= '+str(flag2))
print('e1= ' +str(e1))
print('e2= '+str(e2))
print('n= '+str(n))#flag1= 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280
#flag2= 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075
#e1= 3247473589
#e2= 3698409173
#n= 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313
由题目:我们可以猜测这是一个共模攻击。
flag1和flag2就是密文c1和c2,
之后我们直接套共模攻击模板可以得到flag.
from gmpy2 import *
from Cryptodome.Util.number import *c1= 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280
##flag1
c2= 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075
##flag2
e1= 3247473589
e2= 3698409173
n= 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313_, s1, s2 = gcdext(e1, e2)
print(s1)
print(s2)m = powmod(c1, s1, n) * powmod(c2, s2, n) % n
print(long_to_bytes(m))
这篇关于[SWPUCTF 2021 新生赛]crypto2(共模攻击)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!