AntCTF x D³CTF2023 MISC复现

发布时间 2023-05-02 20:54:37作者: CPYQY

MISC

一、d3readfile

1.题目大概的要求就是让我们想办法获取到flag的filepath,从而读取flag文件,想到了locate命令,查一下locate命令是基于哪个数据库进行查询的,搜到数据库文件位于/var/cache/locate/locatedb

https://blog.csdn.net/weixin_45935219/article/details/120697149
image

2.直接先查询这个文件,找到关键字flag

image

3.输入flag的文件位置opt/vwMDP4unF4cvqHrztduv4hpCw9H9Sdfh/UuRez4TstSQEXZpK74VoKWQc2KBubVZi/LcXAfeaD2KLrV8zBpuPdgsbVpGqLcykz/flag_1s_h3re_233 ,得到flag

image

antd3ctf{18ea1bb6a95eabbfcc67615025e088ffce4f73ee}

二、d3gif

1.得到文件后感觉名字应该是提示作用,看一下gif图,发现最大的区别就是背景颜色不断变,并且有1089帧,1089是33的平方,直接猜测是根据背景颜色可以组成一个新的矩形图

image

2.使用在线工具将其先逐帧分离

https://uutool.cn/gif2img/

3.首先使用脚本读取一下每帧的背景颜色(取色定位点直接选在(0,0)),写个脚本

点击查看代码
from PIL import Image


f = open("./1.txt","w")
for i in range(1,1090):
    img = Image.open(str(i) + '.png')
    rgb = img.getpixel((0, 0))
    f.write(str(rgb))

f.close()


4.我们可以发现,第四位均为255,第三位有0和1之分,那么0,1就是绘制新图的依据,假设0时绘制第三通道为255,1时绘制第三通道为0,写脚本(跟0,1转黑白一个道理)

点击查看代码
from PIL import Image

img1 = Image.new(mode='RGB', size=(33, 33))
for i in range(1, 1090):
    img = Image.open(str(i) + '.png')
    rgb = img.getpixel((0, 0))
    if rgb[2] == 0:
        img1.putpixel((rgb[0], rgb[1]), 255)
    elif rgb[2] == 1:
        img1.putpixel((rgb[0], rgb[1]), 0)

img1.save("./AAA.png")

5.得到一个小二维码,扫码得到flag

image

antd3ctf{G1F_0R_C0L0R_0R_QRC0D3_0R_WHAT???}

image