攻防世界-Misc-2-1

知识点

1.png文件头

2.png文件宽高

步骤

1.题目描述

附件为一张图片,打开报错。用010打开发现png文件头不对。

复制代码
png的文件头:
- (固定)八个字节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计算得到

2.修改文件头

修改完后任然无法打开,猜测crc校验值不对,修改成正确的宽高。

3.修改宽高

python脚本获取正确宽高
复制代码
# 求图片宽高

import binascii
import struct

crcbp = open("5.png", "rb").read()  # 打开图片
crc32frombp = int(crcbp[29:33].hex(), 16)  # 读取图片中的CRC校验值
print(crc32frombp)

for i in range(4000):  # 宽度1-4000进行枚举
    for j in range(4000):  # 高度1-4000进行枚举
        data = crcbp[12:16] + \
               struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        # print(crc32)
        if (crc32 == crc32frombp):  # 计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
            print(i, j)
            print('hex:', hex(i), hex(j))
            exit(0)

修改宽高为:02C5 02F8

打开图片即得到flag。

flag:wdflag{Png_C2c_u_kn0W}

相关推荐
shdwak....sad16 小时前
版本管理&迁移kali-vmware&知识库
人工智能·网络安全
sbjdhjd18 小时前
企业站 SQL 注入实战:PCRE 正则回溯绕过关键词 WAF 完整实战 | 进阶02
sql·安全·web安全·网络安全·ai·开源·php
腾科IT教育20 小时前
网络安全与网络空间安全:概念、产业与防护建议
网络·安全·web安全·网络安全·网络空间安全
ynm1111 天前
2026.7.19(3)【栅栏密码】传统知识+古典密码
安全·网络安全·buuctf
qyyyyy5702 天前
英文技术标准和协议规范怎么读?RFC、接口规范与安全标准 PDF 翻译流程
网络协议·网络安全·机器翻译·csrf·技术美术
发量惊人的中年网工2 天前
中小企业网络管理进阶:从设备堆叠到统一管理
服务器·网络·安全·网络安全·php·制造
菩提小狗2 天前
每日安全情报报告 · 2026-08-15
网络安全·漏洞·cve·安全情报·每日安全
小新讲网安2 天前
PowerShell安全攻防实战:从渗透利用到检测防御全攻略
安全·web安全·网络安全·黑客·自动化·sqlmap·网安
天山@1232 天前
内网横向移动实验:从IPC到PTT的完整攻击链
网络安全·内网横向移动
Bruce_Liuxiaowei3 天前
基于微步在线威胁情报的公网 IP 攻击迹象监测:threatbook_query 脚本全解析与 BruceSec 平台整合实践
数据库·tcp/ip·安全·网络安全·智能体