解题思路:pngcheck 检查发现 IDAT数据块问题,binwalk对图片里面的数据进行分离解压,在这个数据包里面01字符串,01字符串的长度是625,除以8 除以7 都无法整除,也就是说没法直接转换成ascii码,猜测有可能是01转二维码。
解题参考:[SCTF 2014]misc400
这里讲如何生成二维码部分:
- 使用 Python
python
from PIL import Image
# 定义图像的大小
MAX = 25
# 创建新的图像对象
pic = Image.new("RGB", (MAX, MAX))
# 定义二维码数据
qr_data = "1111111000100001101111111100000101110010110100000110111010100000000010111011011101001000000001011101101110101110110100101110110000010101011011010000011111111010101010101111111000000001011101110000000011010011000001010011101101111010101001000011100000000000101000000001001001101000100111001111011100111100001110111110001100101000110011100001010100011010001111010110000010100010110000011011101100100001110011100100001011111110100000000110101001000111101111111011100001101011011100000100001100110001111010111010001101001111100001011101011000111010011100101110100100111011011000110000010110001101000110001111111011010110111011011"
# 填充图像像素
for i, char in enumerate(qr_data):
x = i % MAX
y = i // MAX
color = (0, 0, 0) if char == '1' else (255, 255, 255)
pic.putpixel((x, y), color)
# 显示并保存图像
pic.show()
pic.save("flag.png")
- 使用 Excel
使用公式与条件格式,填充公式A1=MID($Z$1,(ROW()-1)*25+COLUMN(),1)
通过行号和列号计算从 Z1
单元格的特定位置提取一个字符,并填充到当前单元格中。