源鲁杯2024赛题复现Web Misc部分WP

MISC

[Round 1] whatmusic

拿到题目,一个password和加密的压缩包

查看password的文件尾

这里会发现是png文件的文件头,逆序输出,并保存为1.png。得到一个图片,

进行CRC爆破,发现宽高被修改,之后拿到压缩包密码,解密后拿到flag文件。

这时根据题目whatmusic可判断为是音频文件

查看hint1:

桑德拉的女儿lyra。

这时可以去github搜lyra,搜到开源项目。可以将文件解密成音频文件。

(羊城杯和ISCC都可以找到例题)

[Round 1] SinCosTan

这里可以发现是一个wav音频文件

不过这题跟歌没什么关系,可以看到这是png图片的文件头

尝试提取数据

我们查找png文件头文件尾、zip文件头文件尾对应的ASCII数据

拿到俩个png图片和一个zip文件

zip文件中是一个hint.txt(我们需要修复一下zip文件)

很明显的零宽度隐写

那么这里我们拿到俩张一模一样的图片,还拿到了种子seed=114514,很明显能想到盲水印

python bwmforpy3.py decode 1.png 2.png 5.png --seed=114514

盲水印拿到flag

[Round 2] 滴答滴

使用010打开文件可以发现全部都是 00 和 FF,一般来说这是可以用于表示电平信号

看到这个要想到信号是什么编码,判断出是曼切斯特编码。脚本如下:

def read_from_file(filename):
    # 从文件中读取二进制数据
    with open(filename, 'rb') as file:
        return file.read()

def manchester_to_binary(manchester_data):
    # 将曼切斯特编码的数据转换回二进制字符串
    binary_str = ''
    i = 0
    while i < len(manchester_data):
        if manchester_data[i] == 0 and manchester_data[i+1] ==255:
            binary_str += '0'
        elif manchester_data[i] == 255 and manchester_data[i+1] == 0:
            binary_str += '1'
        i += 2  # 每次处理两个字节
    return binary_str

def binary_to_char(binary_str):
    # 将二进制字符串转换回ASCII字符
    return ''.join([chr(int(binary_str[i:i+8], 2)) for i in range(0, len(binary_str), 8)])

# 示例使用
filename = "attachment"  # 输入文件名
manchester_data = read_from_file(filename)
binary_str = manchester_to_binary(manchester_data)
print(binary_str)
ascii_str = binary_to_char(binary_str)

print(f"解码后的ASCII字符串: {ascii_str}")

# 这个脚本的使用要求是文件的十六进制数据为电平内容

[Round 2] 听~

DeepSound发现隐藏压缩包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值