【buuctf】[WUSTCTF2020]spaceclub

小白的第七天,日常记录WP。

flag奉上:wctf2020{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}

1.打开下载的附件发现里面有内容但是被隐藏了。

2.使用Sublime_Text打开选中发现了一堆点。

3.猜测是二进制数,将长的替换成1,短的替换成0。(先替换长的不然会将短的部分变为1)

4.使用python脚本转化为字符得到flag。

脚本如下,仅供参考~:

import binascii

# 打开 attachment.txt 文件进行读取
with open('attachment.txt', 'r', encoding='utf-8') as input_file:
    # 打开 output.txt 文件进行写入
    with open('output.txt', 'w', encoding='utf-8') as output_file:
        temp_lines = []  # 临时列表,用于存储八行内容
        result_chars = []  # 用于存储所有转换后的字符

        # 逐行读取文件内容
        for line in input_file:
            temp_lines.append(line.strip())  # 去除每行末尾的换行符
            
            # 每八行处理一次
            if len(temp_lines) == 8:
                # 将八行内容拼接成一个字符串
                combined_str = ''.join(temp_lines)
                
                # 将拼接的字符串转换为十六进制数,再转为字符
                try:
                    hex_number = hex(int(combined_str, 2))[2:]  # 转换为十六进制数
                    if len(hex_number) % 2 != 0:
                        hex_number = '0' + hex_number  # 确保十六进制数长度为偶数
                    char = binascii.unhexlify(hex_number).decode('utf-8', errors='ignore')  # 转为字符
                    result_chars.append(char)  # 添加到结果列表中
                except ValueError:
                    print("转换失败,请确保输入内容只包含二进制字符(0和1)。")
                
                # 清空 temp_lines 以便处理下一组
                temp_lines = []
        
        # 如果文件行数不是8的倍数,处理剩余的行
        if temp_lines:
            combined_str = ''.join(temp_lines)
            try:
                hex_number = hex(int(combined_str, 2))[2:]
                if len(hex_number) % 2 != 0:
                    hex_number = '0' + hex_number  # 确保十六进制数长度为偶数
                char = binascii.unhexlify(hex_number).decode('utf-8', errors='ignore')
                result_chars.append(char)
            except ValueError:
                print("转换失败,请确保输入内容只包含二进制字符(0和1)。")
        
        # 将所有字符拼接成一个字符串写入 output.txt 文件
        output_file.write(''.join(result_chars))

print("处理完成,结果已写入 output.txt")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值