LILCTF-MISC部分

发布于 3 天前 192 次阅读


LILCTF-MISC部分

PNG Master

文件尾部有base64,解一下

flag1:4c494c4354467b

然后lsb隐写

exp

# -*- coding: UTF-8 -*-
from PIL import Image
def mod(x, y):
    return x % y
def toasc(strr):
    return int(strr, 2)
def func(le, str1, str2):
    b = ""
    im = Image.open(str1)
    lenth = le * 8
    width = im.size[0]
    height = im.size[1]
    count = 0
    for h in range(0, height):
        for w in range(0, width):
            # 获得(w,h)点像素的值
            pixel = im.getpixel((w, h))
            # 此处余3,依次从R、G、B三个颜色通道获得最低位的隐藏信息
            if count % 3 == 0:
                count += 1
                b = b + str(mod(int(pixel[0]), 2))
                if count == lenth:
                    break
            if count % 3 == 1:
                count += 1
                b = b + str(mod(int(pixel[1]), 2))
                if count == lenth:
                    break
            if count % 3 == 2:
                count += 1
                b = b + str(mod(int(pixel[2]), 2))
                if count == lenth:
                    break
        if count == lenth:
            break
    with open(str2, "wb") as f:
        for i in range(0, len(b), 8):
            # 以每8位为一组二进制,转换为十进制
            stra = toasc(b[i:i+8])
            # 将转换后的十进制数视为ascii码,再转换为字符串写入到文件中
            f.write(bytes([stra]))
if __name__ == "__main__":
    le = 3000  # 文件长度
    # 含有隐藏信息的图片
    new = r"E:Downloada.png"
    # 信息提取出后所存放的文件
    tiqu = r"E:Downloadget_flag.txt"
    func(le, new, tiqu)

获得flag2:5930755f3472335f4d

很明显的,多了一个异常块,解压出一个hint.txt和secret.bin

提示零宽,去解一下

连在一起获得flag

LILCTF{Y0u_4r3_Mas7er_in_PNG}

提前放出附件

首先构造一个tar文件

不难发现 文件结构很好控制,全是00000000

构造tar头去进行明文攻击,很快就出来了(其实根据已知LILCTF{也可以构造内容去打,但是偏移量会有点多)img

LILCTF{Z1pCRyp70_1s_n0t_5ecur3}

是谁没有阅读参赛须知?

就在这里

LILCTF{Me4n1ngFu1_w0rDs}

v我50(R)MB

对这个图片的地址抓个包,重放就能看到他的正确Content-Type其实是image/pngimg

yakit开渲染直接就能出完整图片

img

  • reward_image1
Being Better
最后更新于 2025-08-18