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))
相关推荐
errorPage24 分钟前
Python空值判断避坑指南 + 图片定点缩放逻辑优化实战
python
郝学胜-神的一滴25 分钟前
Python方法类型详解:类方法、静态方法与实例方法
开发语言·python·程序人生
百***243734 分钟前
Grok-4.1 API进阶实战:Python项目集成、性能优化与异常处理全攻略
python·spring·性能优化
Trust yourself24336 分钟前
魔塔社区下载的大模型如何通过ollama部署到本地
python
码农胖虎-java36 分钟前
【java并发编程】从源码角度彻底理解 ForkJoinPool.commonPool
java·开发语言·python
毕设源码-朱学姐40 分钟前
【开题答辩全过程】以 基于Python淘宝电脑销售数据可视化系为例,包含答辩的问题和答案
python·信息可视化·电脑
三木彤42 分钟前
Scikit-learn 零基础,从安装到实战机器学习模型
python
Ulyanov42 分钟前
高级可视化技术——让PyVista数据展示更专业
开发语言·前端·人工智能·python·tkinter·gui开发
Sagittarius_A*1 小时前
图像滤波:手撕五大经典滤波(均值 / 高斯 / 中值 / 双边 / 导向)【计算机视觉】
图像处理·python·opencv·算法·计算机视觉·均值算法
开开心心_Every1 小时前
一键隐藏窗口到系统托盘:支持任意软件摸鱼
服务器·前端·python·学习·edge·django·powerpoint