引言
今天把数分作业肝完了,明天肝完高代,假期就过去了
MG正义到了(堆积+1)
RSA3
看到 c1, c2, e1, e2, n 就猜到是共模攻击
见 CTF Wiki Crypto 部分 非对称加密 RSA 模数相关攻击
from Crypto.Util.number import *
import gmpy2
c1 = 22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n = 22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1 = 11187289
c2 = 18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2 = 9647291
print(GCD(e1, e2)) # 1
def exgcd(a, b): # 扩展欧几里得算法,求ua+vb=gcd(a,b)中的u,v
if b == 0:
u, v = 1, 0
return (u, v)
if a < b:
a, b = b, a
u, v = exgcd(b, a%b)
u, v = v, u - a // b * v
return (u, v)
u, v = exgcd(e1, e2)
print(u, v)
m = gmpy2.powmod(c1, u, n) * gmpy2.powmod(c2, v, n) % n
print(long_to_bytes(m))
得到 flag : flag{49d91077a1abcb14f1a9d546c80be9ef}
世上无难事
题目给了一串字符:
VIZZB IFIUOJBWO NVXAP OBC XZZ UKHVN IFIUOJBWO HB XVIXW XAW VXFI X QIXN VBD KQ IFIUOJBWO WBKAH NBWXO VBD XJBCN NKG QLKEIU DI XUI VIUI DKNV QNCWIANQ XN DXPIMKIZW VKHV QEVBBZ KA XUZKAHNBA FKUHKAKX XAW DI VXFI HBN QNCWIANQ NCAKAH KA MUBG XZZ XEUBQQ XGIUKEX MUBG PKAWIUHXUNIA NVUBCHV 12NV HUXWI XAW DI XUI SCQN QB HZXW NVXN XZZ EBCZW SBKA CQ NBWXO XAW DI DXAN NB NVXAP DXPIMKIZW MBU JIKAH QCEV XA BCNQNXAWKAH VBQN HKFI OBCUQIZFIQ X JKH UBCAW BM XLLZXCQI XAW NVI PIO KQ 640I11012805M211J0XJ24MM02X1IW09
不知道是什么,猜想为替换密码,尝试爆破:https://quipqiup.com/
得到结果:
flag 为 640E11012805F211B0AB24FF02A1ED09
再将大写字母替换成小写字母:
key = '640E11012805F211B0AB24FF02A1ED09'
flag = ''
for i in range(len(key)):
if ord('A') <= ord(key[i]) <= ord('Z'):
flag += chr(ord(key[i]) - ord('A') + ord('a'))
else:
flag += key[i]
print(flag)
结语
已经4号了,GO语言还没开始学(咕咕咕)
希望继续坚持