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{也可以构造内容去打,但是偏移量会有点多)
LILCTF{Z1pCRyp70_1s_n0t_5ecur3}
是谁没有阅读参赛须知?
就在这里
LILCTF{Me4n1ngFu1_w0rDs}
v我50(R)MB
对这个图片的地址抓个包,重放就能看到他的正确Content-Type
其实是image/png
yakit开渲染直接就能出完整图片
Comments NOTHING