ctfshow-红包题第五弹

 

 

题目下载:https://www.lanzoui.com/i9e23fi

 

 

 

下载打开之后发现是一个MP3文件,猜测有音频隐写

 

 但是在多次尝试之后,并没有发现有音频隐写。

那还是老方法:用010打开该压缩包,发现压缩包里有JPG文件头 :FF D8 FF

 

将FF D8 FF以下内容复制后新建并保存后,发现是一张图片

 

再次使用010打开此图片,下拉过程中发现一些奇怪字符

 

猜测该图片有隐写,在kail中使用steghide命令

steghide extract -sf 2.JPG 

 

 

 使用弱口令 :123456

发现成功了,导出一个文档,打开后发现是base64加密

 

 

对base64解密后发现是一个网址 :https://www.lanzous.com/i9dpjxe

发现直接打开打不开,可以先打开 https://www.lanzoui.com/i9e23fi

然后将后缀替换成19dpjxe就可以打开

下载打开后发现是一大段的16进制

 

 将文本里的内容以16进制的格式复制到010中

 

 发现一大堆的坐标,应该要用到rgb脚本转化为图片

先将010中的坐标导出,直接上python脚本

import re

str_ = ""
str_list = []
with open('a.txt') as f:
    for i in f.readline():
        str_ += i
        if (str_[-1] == ")"):
            str_ = "".join(re.findall("\(.*\)", str_))
            str_list.append(str_.strip('(').strip(')'))
            str_ = ""

with open('rgb.txt', 'w') as f:
    for i in str_list:
        f.write(i + '\n')
运行结果:

 

 接着就是把rgb转化成图像了(网上直接找现成的,x和y就是上面的坐标,从0开始算所以是72和74)

from PIL import Image
 
x = 72    #x坐标  通过对txt里的行数进行整数分解
y = 74   #y坐标  x * y = 行数
 
im = Image.new("RGB", (x, y))   #创建图片
file = open('rgb.txt')    #打开rbg值的文件
 
#通过每个rgb点生成图片
 
for i in range(0, x):
    for j in range(0, y):
        line = file.readline()  #获取一行的rgb值
        rgb = line.split(", ")  #分离rgb,文本中逗号后面有空格
        im.putpixel((i, j), (int(rgb[0]), int(rgb[1]), int(rgb[2])))    #将rgb转化为像素
 
im.save('flag.jpg') 

 

运行后得到一张颠倒的二维码

 使用PS将二维码重新进行拼图得到:

 使用QR Research扫描二维码得到flag

 

 

posted @ 2021-10-13 21:14  AttacBurlk  阅读(457)  评论(0)    收藏  举报