杂项

ctf.show红包题第五弹

Posted on 2020-02-16,3 min read

下载地址:https://www.lanzous.com/i9e23fi
binwalk。foremost得到了一个MP3以及两张图片

JPG。首先就右键看下有没有敏感信息。或提示。隐写
MP3。基本就看波形。看详细信息。MP3隐写
群主后来放出了Hint。和MP3无关。那么方向基本就是JPG隐写了
经过一番尝试。一个个试。。终于试出来了

base64解码后。是一个URL。下载得到red5.zip
得到一串类似16进制字符串的数据

写脚本解码下

f=open('flag.txt','r')
data=f.read()
f.close()
result=''
for i in range(0,len(data),2):
    result+=chr(int('0x'+data[i:i+2],16))
print result

得到如下的东西

刷过PIL题的我。一眼就看出来。这是RGB的值。前面的是坐标。接下来就写个脚本。将坐标和值。用PIL库画图

from PIL import Image
import re
pic=Image.new("RGB",(200,200))
file=open('3.txt','r')
#3.txt中数据格式如下
#[71:72](255, 255, 255)
#[71:73](255, 255, 255)
add=[]
m=file.read().split("\n")
for i in range(len(m)-1):
    data=re.match('\[(.*)\]',m[i]).group(1).split(':')
    add.append(data)
#将坐标取出来。用:分割作为一个数组放入add数组。成为二维数组
f=open('yes.txt','r')
#yes.txt是只有RGB值的数据
data=f.readlines()
rgb=[]
for i in range(len(data)):
    rgb.append(data[i].replace("\n","").split(','))
#取出来。用逗号分割
for i in range(5328):
    pic.putpixel([int(add[i][0]),int(add[i][1])],(int(rgb[i][0].replace('(','')),int(rgb[i][1]),int(rgb[i][2].replace(')',''))))
#这一步比较复杂。pic.putpixel([x,y],(255,255,255))
#x,y是坐标,(255,255,255)就是RGB值。这里我用二维数组。将每个值。单独取出来。
pic.show()

得到了一个二维码。但貌似。上下颠倒了

用画图工具。截取上面的放下面。下面的放上面。
扫描二维码。得到flag

下一篇: [SUCTF 2018]GetShell(无数字字母webshell)→