[CISCN 2021初赛]rsa
源代码:
from flag import text,flag
import md5
from Crypto.Util.number import long_to_bytes,bytes_to_long,getPrimeassert md5.new(text).hexdigest() == flag[6:-1]msg1 = text[:xx]
msg2 = text[xx:yy]
msg3 = text[yy:]msg1 = bytes_to_long(msg1)
msg2 = bytes_to_long(msg2)
msg3 = bytes_to_long(msg3)p1 = getPrime(512)
q1 = getPrime(512)
N1 = p1*q1
e1 = 3
print pow(msg1,e1,N1)
print (e1,N1)p2 = getPrime(512)
q2 = getPrime(512)
N2 = p2*q2
e2 = 17
e3 = 65537
print pow(msg2,e2,N2)
print pow(msg2,e3,N2)
print (e2,N2)
print (e3,N2)p3 = getPrime(512)
q3 = getPrime(512)
N3 = p3*q3
print pow(msg3,e3,N3)
print (e3,N3)
print p3>>200
攻击代码:
from Crypto.Util.number import *
from gmpy2 import *
from hashlib import *m=b"\nO wild West Wind, thou breath of Autumn's being,\nThou, from whose unseen presence the leaves dead\nAre driven, like ghosts from an enchanter fleeing,\nYellow, and black, and pale, and hectic red,\nPestilence-stricken multitudes: O thou,\nWho chariotest to their dark wintry bed\n'"
print(md5(m).hexdigest())
c1=19105765285510667553313898813498220212421177527647187802549913914263968945493144633390670605116251064550364704789358830072133349108808799075021540479815182657667763617178044110939458834654922540704196330451979349353031578518479199454480458137984734402248011464467312753683234543319955893
m1=iroot(c1,3)[0]
print(long_to_bytes(m1))
c2=54995751387258798791895413216172284653407054079765769704170763023830130981480272943338445245689293729308200574217959018462512790523622252479258419498858307898118907076773470253533344877959508766285730509067829684427375759345623701605997067135659404296663877453758701010726561824951602615501078818914410959610
c3=91290935267458356541959327381220067466104890455391103989639822855753797805354139741959957951983943146108552762756444475545250343766798220348240377590112854890482375744876016191773471853704014735936608436210153669829454288199838827646402742554134017280213707222338496271289894681312606239512924842845268366950
n2=111381961169589927896512557754289420474877632607334685306667977794938824018345795836303161492076539375959731633270626091498843936401996648820451019811592594528673182109109991384472979198906744569181673282663323892346854520052840694924830064546269187849702880332522636682366270177489467478933966884097824069977
d,s,v=gcdext(17,65537)
m2=(powmod(c2,s,n2)*powmod(c3,v,n2))%n2
print(long_to_bytes(m2))
p=11437038763581010263116493983733546014403343859218003707512796706928880848035239990740428334091106443982769386517753703890002478698418549777553268906496423
n3=113432930155033263769270712825121761080813952100666693606866355917116416984149165507231925180593860836255402950358327422447359200689537217528547623691586008952619063846801829802637448874451228957635707553980210685985215887107300416969549087293746310593988908287181025770739538992559714587375763131132963783147
q=n3//p
c4=59213696442373765895948702611659756779813897653022080905635545636905434038306468935283962686059037461940227618715695875589055593696352594630107082714757036815875497138523738695066811985036315624927897081153190329636864005133757096991035607918106529151451834369442313673849563635248465014289409374291381429646
d=invert(65537,(p-1)*(q-1))
m3=powmod(c4,d,n3)
print(long_to_bytes(m3))
m=long_to_bytes(m1)+long_to_bytes(m2)+long_to_bytes(m3)
print(m)
m=md5(m).hexdigest()
print(m)
NSSCTF{3943e8843a19149497956901e5d98639}
[HNCTF 2022 Week1]baBAbaseSEse
先用92解码
在用91解码
用85解码
用base64解码
用base32解码
用base16解码
得到flag
NSSCTF{th3re_1s_als0_b4se_36_45_58_62_100}
[LitCTF 2023]e的学问
源代码:
from Crypto.Util.number import *
m=bytes_to_long(b'xxxxxx')
p=getPrime(256)
q=getPrime(256)
e=74
n=p*q
c=pow(m,e,n)
print("p=",p)
print("q=",q)
print("c=",c)
#p= 86053582917386343422567174764040471033234388106968488834872953625339458483149
#q= 72031998384560188060716696553519973198388628004850270102102972862328770104493
#c= 3939634105073614197573473825268995321781553470182462454724181094897309933627076266632153551522332244941496491385911139566998817961371516587764621395810123
攻击代码:
from Crypto.Util.number import *
from gmpy2 import *p= 86053582917386343422567174764040471033234388106968488834872953625339458483149
q= 72031998384560188060716696553519973198388628004850270102102972862328770104493
c= 3939634105073614197573473825268995321781553470182462454724181094897309933627076266632153551522332244941496491385911139566998817961371516587764621395810123
e=74n=p*q
phi=(p-1)*(q-1)print(gcd(e,p-1))
print(gcd(e,q-1))t=gcd(e,phi)
d=invert(e//t,phi)
m2=pow(c,d,n)
m=iroot(m2,2)[0]
print(long_to_bytes(m))
flag为:
NSSCTF{e_1s_n0t_@_Prime}