[GXYCTF2019]SXMgdGhpcyBiYXNlPw==

打开题目,里面很多base64编码

再根据题目名字,解码之后是Is this base?

猜测是base64隐写,直接脚本跑出flag

#encoding: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('/home/kali/桌面/flag.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)

res_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
print(res_str)

if __name__ == '__main__':
    solve_stego()

注意是python2的脚本

image-20220826111416860

image-20220826111400671

posted @ 2022-08-26 11:17  Jinx8823  阅读(166)  评论(0编辑  收藏  举报