[AFCTF2018]BASE解题思路

发布时间:2024年01月18日

?

解压缩后可以看到有21.7M,打开看看这么打的内容是什么

?密密麻麻的一堆,不过仔细看,可以发现符合BASE16的特点,只有0-9的数字和ABCDEF6个英文字符,找一网址解码?这也太多了呀,我们警惕一下,先复制一些片段解码

解密完之后怎么看这个像是base64的了,再解密一下base64

解密过后,可以发现还是一堆密文,如何搞?

由此我们可以猜测,本题后续步骤将会是循环使用不同的Base编码方案进行解码,我们可以编写脚本来完成这个重复工作。

import re,base64
s=open('D:/flag_encode.txt','rb').read()
base16_dic=r'^[A-F0-9=]*&'
base32_dic=r'^[A-Z2-7=]*&'
base16_dic=r'^[A-Za-z0-9/+=]*&'
n=0
while True:
    n+=1
    t=s.decode()
    if'{'in t:
        print(t)
        break
    elif re.match(base16_dic,t):
        s=base64.b16decode(s)
    elif re.match(base32_dic,t):
        s=base64.b32decode(s)
    elif re.match(base64_dic,t):
        s=base64.b64decode(s)

这里我们按照正则进行匹配,如果符合Base相应编码则进行解码,如果出现特殊字符'{'则输出内容,运行脚本便可以解出Flag。

文章来源:https://blog.csdn.net/weixin_49765221/article/details/135675767
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。