【愚公系列】2021年11月 攻防世界-简单题-MISC-011(base64stego)

2021-12-03 17:06:17 浏览数 (2)

文章目录

  • 一、base64stego
  • 二、答题步骤
    • 1.打开题目附件得到zip文件解压后得到文本如下
  • 总结

一、base64stego

文件:打开题目附件得到zip文件解压后得到文本如下

二、答题步骤

1.打开题目附件得到zip文件解压后得到文本如下

发现一堆base64,猜测位base64隐写,上脚本

代码语言:javascript复制
#coding=utf-8
def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /'
    res = 0
    for i in xrange(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res

def solve_stego():
    with open('1.txt', 'rb') as f:
        file_lines = f.readlines()
        bin_str = ''
        for line in file_lines:
            steg_line = line.replace('n', '')
            norm_line = line.replace('n', '').decode('base64').encode('base64').replace('n', '')
            diff = get_base64_diff_value(steg_line, norm_line)
            print diff
            pads_num = steg_line.count('=')
            if diff:
                bin_str  = bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str  = '0' * pads_num * 2
            print goflag(bin_str)

def goflag(bin_str):
    res_str = ''
    for i in xrange(0, len(bin_str), 8):
        res_str  = chr(int(bin_str[i:i   8], 2))
    return res_str

if __name__ == '__main__':
    solve_stego()

运行后等到flag:flag{Base_sixty_four_point_five}

总结

  • 这是送分题

0 人点赞