开学考核密码杂项复现

密码杂项复现

不要尝试爆破呦!

将题目中下载的文件解压后得到一张图片和一个压缩包,压缩包里面的文本需要密码

那就解析这张图片,从而获得密码

这里可以看到Key{}

将没用的数字和空格删掉即为密码

密码yUnxiwlGF@604..S_ET-up,解开后发现文本的开头这是base64解码

解码后得到这样一个残缺的二维码,把它补充完整进行扫描便可以得到flag

留个后门

将下载的文件用D盾扫描,发现这个文件

将其打开一个一个打开去找flag

发现了flag,Yunxi{This is flag!!!}

师姐的旅游照片

根据题目的提示,打开后发现一张图片然后解析图片

得到一串base64码,进行解码

得到了一半的flag

再把他压缩后再进行解压修改他的宽高度得到flag

来听一首music

解压下载的文件后发现1个文件一个压缩包压缩包需要密码

将yunxi.MP3文件拖到这个MP3tego的目录里面,执行cmd命令

得到了passwd.txt,打开

尝试解码

发现一个密码,是另一个压缩包的,解开尝试一下

打开后得到一个文本,进行摩斯密码解密将A用-代替,B用.代替

%u7b 和 %u7d 是 unicode 字符的十六进制编码.%u7b 对应{,%u7d 对应 }

转换得到flag

Yunxi{HHHTHIS_IS_F1AG+20240306}

Fuck!

进行两次解码得到flag

MD5

运行python脚本得到flag

脚本:

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(('Yunxi{' + chr(i) + '_real' + chr(j) + 'y_k' + chr(k) + '0w_md5}').encode('utf-8'))

            des = m.hexdigest()

            if des == '42db61d26c6541e30314cafc60f93113':

                print('Yunxi{' + chr(i) + '_real' + chr(j) + 'y_k' + chr(k) + '0w_md5}')

                break

XX+KS

进行xxencode解码,再运行脚本得到flag

ciphertext = "afZ_rj]]fQZcN1[^kXhTjTdZQcW\Zh"

plaintext = ""

part1_offset = 5

part2_offset = 6

# 第一部分解密

for i in range(len("flag{this_is_}")):

    char = ciphertext[i]

    plaintext += chr(ord(char) + part1_offset)

    part1_offset += 1

# 第二部分解密

for i in range(len("flag{this_is_}"), len(ciphertext)):

    char = ciphertext[i]

    plaintext += chr(ord(char) + part2_offset)

    part2_offset += 1

print(plaintext)

EZ-rsa

n= [5567000486226353254524673454357147076118077122275789480555238584552332526459181641567858429587222587683345901310468140782420858931709570476562698953112801, 6982887363645354856540867035629441781549999700006363403940951376485517460506822033812812263179663875843737953430050436453298336104404304183964162702612863, 5569628780521526092136759047774448808289588145127191213956593902336353172559905282602383716258500935021056393917971164303539941268395159953652768614304911]

c= [4112523544883480830903403452517516825703078902670926405984774762024235980767805538947466914193950835488469608756778569692190967901730207690525300247682815, 4181292472036270897593568708931413787888488621274030741130549434467976405476555130890722346319549396800183827305452019796119873044279138566837264814627098, 3857434270788621361517349247277347831953021241414984430770586220424214110700999615785879462771584952744049357875753754209006439028080870626012342467148773]

from functools import reduce #用于对序列进行累积操作

def CRT(mi, ai): #中国剩余定理,用于合并c中的加密结果,mi模数列表,ai加密列表

assert(reduce(gmpy2.gcd,mi)==1) #模数是互质(它们的最大公约数)

assert (isinstance(mi, list) and isinstance(ai, list))

M = reduce(lambda x, y: x * y, mi)#计算所有模数的乘积M

ai_ti_Mi = [a * (M // m) * gmpy2.invert(M // m, m) for (m, a) in zip(mi, ai)]#m对应的加密结果a储存在ai_ti_mi列表中,x模m的乘法逆元

return reduce(lambda x, y: x + y, ai_ti_Mi) % M#将所有a相加,并对m取模得到crt结果

e=0x3#公钥指数

m=gmpy2.iroot(CRT(n, c), e)[0]#第一个元素是整数部分,用[0]获取

print(binascii.unhexlify(hex(m)[2:].strip("L")))#将明文从十六进制转成二进制

#互质。例如,3和11、相邻的自然数、相邻的奇数、1和任何数、两个不同的质数、2和任何奇数等都是互质的。

#中国剩余定理和取小次方根

然后将{}MD5加密后得到flag

结果:Yunxi{30a01dc5542751497477c601093dd201}

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值