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))
相关推荐
学测绘的小杨14 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz31021 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐21 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱1 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot1 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海2 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱2 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽2 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码2 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理