BUUCTF Crypto 7
发布时间
阅读量:
阅读量
RSA
通过加压手段获取到两个文件 pub.key 和 flag.enc。打开 pub.key 后发现其为公钥,并通过在线解析工具进行解析:

得到n和e
在拆分n得到p和q

直接上脚本
import gmpy2
import rsa
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
d = gmpy2.invert(e,(q-1)*(p-1))
print(d)
d = 81176168860169991027846870170527607562179635470395365333547868786951080991441
key = rsa.PrivateKey(n,e,d,p,q)
print(key)
with open("flag.enc","rb") as f:
print(rsa.decrypt(f.read(),key).decode())
RSAROLL
解压操作完成后生成了两个新的txt文件;题目前面标有提示标记;其中最为关键的是data.txt;打开查看后发现

n与e的第一行。基于rsa算法的基本原理进行分析,在线网站上解析这些数值应当对应于密文c,并解密得到明文m。通过在线解析工具获取素数p与q,并对data.txt文件进行修改后上至脚本执行处理
import gmpy2
n=920139713
q=18443
p=49891
e=19
d=gmpy2.invert(e,(p-1)*(q-1))
res=[]
with open('data.txt','rb') as f:
for i in f:
res.append(chr(pow(int(i),d,n)))
print("".join(res))
运行得到flag。
还原大师

md5碰撞
三个未知能暴力破解
将所有可打印字符考虑进去
import hashlib
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode("utf-8"))
des=m.hexdigest()
if 'e903' in des and '4dab' in des and '80' in des and '08' in des and '51' in des:
print ('flag{'+des+'}') #TASCJO3RJMVKWDJKXLZM
print('i=',chr(i),'j=',chr(j),'k=',chr(k))#JKL
运行得到flag

全部评论 (0)
还没有任何评论哟~
