蓝盾杯-base64

之前有想过是base64隐写,但是由于没有找到base64字符串所以最后也就没做出来。今天经大佬提点找到了流量包中的base64字符串也就顺便做出来了

0x1

首先在流量包中找到隐藏在其中的base64字符串,

在这里发现一共有17个txt,每个txt里面都有base64字符串

分别把他们扣下来

然后对其中一个base64解码看看 会发现解码后还是几行base64

这就让我想到了之前看到师傅的一篇有关base64隐写的文章

https://www.tuicool.com/articles/RRr2miE

0x2

于是写脚本把全部的第一层base64先解码,再用脚本跑隐写

import base64
b64=""
for i in range(17):
    file="base64/"+str(i)+".txt"
    f=open(file)
    base=f.read()
    b64+=base
    f.close()
base64_decode=base64.b64decode(b64)
print base64_decode
with open("base64/base64.txt","w") as f1:
    f1.write(base64_decode)
f1.close()

然后再用师傅现成的脚本跑一跑出结果

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('base64/base64.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)
      pads_num = steg_line.count('=')
      if diff:
        bin_str += bin(diff)[2:].zfill(pads_num * 2)
      else:
        bin_str += '0' * pads_num * 2
      res_str = ''
      for i in xrange(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i+8], 2))
        print res_str

solve_stego()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 取证类题目 在CTF中,取证赛题包括了文件分析、隐写、内存镜像分析和流量抓包分析。任何要求检查一个静态数据文件(与...
    查无此人asdasd阅读 5,228评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • 效果如下: 具体实现如下:文件名为:guide_go_button.xml 把这个selector作为图片设置为B...
    zerone1阅读 10,334评论 0 0
  • 最近一个多月,狼狈忙乱的可怕,我知道,很多人都跟我一样过得也不太好,大三了,很多事不得不去想,很多时候不敢再去任性...
    西原木子阅读 2,854评论 0 0
  • 窗外銀屑飛舞 屋中暖意豐足 冬日懶罷戶外 獨坐家中讀書
    冷眼袋阅读 2,656评论 0 0