Bugku CTF---where is flag 5

"本文详细介绍了如何解决一个解密挑战,首先通过Base64解码得到一串字节,然后将字节转换为二进制,最后将二进制数据按特定格式转化为字符,揭示了隐藏的flag——bugku{ce26f61d40fea75fc0b980d7588e}
摘要由CSDN通过智能技术生成

前言

tokeii的where is flag系列第五题嘎嘎上新
在这里插入图片描述

题目

在这里插入图片描述文本内容:
Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ==

解题过程

base64解码
import base64

enc = 'Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ=='
print(base64.b64decode(enc))

得到一串如下字节

b'\x1b\x1f\x04\x00\x0f\x12\x08\x12\x1f\x1d\x00\x11\x0b\x13\x14\x1f\x0b\x00\x1d\x1c\x11\x1e\x1f\x01\x11\x0c\x1a\x14\x14\x1f\x1b\x03\x18\x08\x16\x11\x1f\x1e\x12\x05\x14\x1d\x19\x1f\x07\x01\r\x10\x15'
转换成二进制
enc = 'Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ=='
text = base64.b64decode(enc)
bin_data = ["0"*(5-len(i))+i if len(i)!=5 else i for i in [bin(j).replace('0b','') for j in text]]

得到如下数据:

11011
11111
00100
00000
01111
10010
01000
10010
11111
11101
00000
10001
01011
10011
10100
11111
01011
00000
11101
11100
10001
11110
11111
00001
10001
01100
11010
10100
10100
11111
11011
00011
11000
01000
10110
10001
11111
11110
10010
00101
10100
11101
11001
11111
00111
00001
01101
10000
10101
将二进制转换为字符

循环将每一个二进制的相同位数的数据取出,再以长度7切片转换为字符

flag = ''
data1 = ''
for j in range(5):
    for i in bin_data:
        data1 +=i[j]
for k in range(0,len(data1),7):
    flag +=chr(int(str(data1[k:k+7]),2))
脚本
import base64

enc = 'Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ=='
text = base64.b64decode(enc)
bin_data = ["0"*(5-len(i))+i if len(i)!=5 else i for i in [bin(j).replace('0b','') for j in text]]
flag = ''
data1 = ''
for j in range(5):
    for i in bin_data:
        data1 +=i[j]
for k in range(0,len(data1),7):
    flag +=chr(int(str(data1[k:k+7]),2))
print(flag)

python一句话解题脚本

#whereiflag.txt与该脚本放置在同一目录下
print((lambda x : "".join([chr(int(x[i:i+7], 2)) for i in range(0, len(x), 7)]))("".join([p[k] for k in range(5) for p in ["0"*(5-len(i))+i if len(i)!=5 else i for i in [bin(j).replace('0b','') for j in __import__('base64').b64decode(open('whereiflag5.txt','rb').read().replace(b'\n',b'').replace(b'\r',b''))]]])))

flag:

bugku{ce26f61d40fea75fc0b980d7588e}

【喜欢周周ovo】

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值