BUUCTF Crypto 7

RSA

加压拿到两个文件,pub.key和flag.enc
pub.key打开看一下发现是公钥
用在线解析工具解析
http://www.ssleye.com/pub_asysi.html
BUUCTF Crypto 7_第1张图片
得到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。

还原大师

BUUCTF Crypto 7_第2张图片
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
在这里插入图片描述

你可能感兴趣的:(BUUCTF Crypto 7)