BUUCTF-MISC-04大白

题目:让图片全面显示宽高

更改高宽一致

发现大白没有完全显示,优先考虑到图片高度隐写,猜测是FLAG隐藏在少掉的部分里,所以需要修改图片的高度与宽一致

我们借助010工具完成操作

根据内容可以看到高和宽不一样,这时候,我们可以把高和宽改为一样的,而后右键保存后打开文件.,就可以看到flag了

图片内容详解

(固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头 (固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13 (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH) (可变)13位数据块(IHDR)前四个字节代表该图片的宽,后四个字节代表该图片的高 后五个字节依次为: Bit depth、ColorType、Compression method、Filter method、Interlace method (可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七位字节进行crc计算得到。 文件尾:AE 42 60 82

图片尺寸为787x500(高x宽) 00 00 00 0D 说明IHDR头块长为13 49 48 44 52 IHDR标识 00 00 03 13 图像的宽,787像素 00 00 01 F4 图像的高,500像素 这里需要注意的是,文件宽度不能任意修改,需要根据 IHDR 块的 CRC 值爆破得到宽度,否则图片显示错误不能得到 flag

宽度如何更改?

通过以下方式查看crc

爆破crc的python代码

复制代码
import os
import binascii
import struct
​
crcbp = open("D:\\桌面文件\\bingbing.png", "rb").read()    #打开图片
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + \
            struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0xda5a4a50):    #图片当前CRC
            print(i, j)
            print('hex:', hex(i), hex(j))
相关推荐
眼眸流转4 分钟前
MCP学习笔记
python·uv·pydantic·mcp
千禧皓月10 分钟前
huggingface-cli下载数据集和模型
python
DREAM依旧23 分钟前
本地微调的Ollama模型部署到Dify平台上
人工智能·python
小陈phd24 分钟前
langGraph从入门到精通(九)——基于LangGraph构建具备多工具调用与自动化摘要能力的智能 Agent
人工智能·python·langchain
一晌小贪欢25 分钟前
Python 对象的“Excel 之旅”:使用 openpyxl 高效读写与封装实战
开发语言·python·excel·表格·openpyxl·python办公·读取表格
【赫兹威客】浩哥26 分钟前
【赫兹威客】Python解释器部署教程
python
代码or搬砖30 分钟前
Prompt(提示词工程)
人工智能·python·prompt
喵手36 分钟前
Python爬虫零基础入门【第二章:网页基础·第3节】接口数据基础:JSON 是什么?分页是什么?
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·接口数据基础·爬虫json
2501_9445264237 分钟前
Flutter for OpenHarmony 万能游戏库App实战 - 关于页面实现
android·java·开发语言·javascript·python·flutter·游戏
开开心心_Every38 分钟前
手机端课程表管理工具:支持课程导入自定义
python·游戏·微信·django·pdf·excel·语音识别