【2023 雷泽杯 · Misc】png的秘密

news/2024/5/19 21:56:27 标签: png隐写, ctf, misc

一个关于png结构的题目

一、题目

一张打不开的png文件,唉。

 

二、解题思路

少了头,就给他加上。我比较笨,还是萌新,采用导出16进制,添加后,010editor导入16进制。

添加之后,顺眼多了。然后用png模板扫一下看看有没有大的错误。 

 

两个校验值错误,也进行相应的修改~~

 

这一版的文件还是打不开~(前几版增加了头、修改两个校验值)说明还有错误,于是我们把目光移向右下角的

PNG文件格式中的数据块

数据块符号

数据块名称

多数据块

可选否

位置限制

IHDR文件头数据块第一块
cHRM基色和白色点数据块在PLTE和IDAT之前
gAMA图像γ数据块在PLTE和IDAT之前
sBIT样本有效位数据块在PLTE和IDAT之前
PLTE调色板数据块在IDAT之前
bKGD背景颜色数据块在PLTE之后IDAT之前
hIST图像直方图数据块在PLTE之后IDAT之前
tRNS图像透明数据块在PLTE之后IDAT之前
oFFs(专用公共数据块)在IDAT之前
pHYs物理像素尺寸数据块在IDAT之前
sCAL(专用公共数据块)在IDAT之前
IDAT图像数据块与其他IDAT连续
tIME图像最后修改时间数据块无限制
tEXt文本信息数据块无限制
zTXt压缩文本数据块无限制
fRAc(专用公共数据块)无限制
gIFg(专用公共数据块)无限制
gIFt(专用公共数据块)无限制
gIFx(专用公共数据块)无限制
IEND图像结束数据最后一个数据块

是的:没有符号为EASY的块!!反而缺少了IDAT图像数据块!!

于是我们找到EASY在源码中的位置,修改。可以通过右下角变量窗口,选中EASY,对应的源码会高亮。然后覆写成IDAT对应的16进制值即可,至于IDAT对应的16进制值,可以找一张正确的png图片对照。

 

然后保存为png图片,即可看到:

 

照常看了lsb、zsteg、foremost、binwalk、stegsolve等,没发现异常,猜测图片高度隐写,类似的题目可以看这一篇【2023 雷泽杯 · Misc】我是签到题_Mr_Fmnwon的博客-CSDN博客

于使就通过010editor修改源码中高度的部分,一个大力,就显露了flag 

 在过程中,修改源码,勿忘校验值也要修改哦!


总结

这题是png隐写基础方法的集成者,加深了对png隐写的理解


http://www.niftyadmin.cn/n/345284.html

相关文章

Unix/C/C++进阶--线程 pthread_creat() return 1失败

[TOC](Unix/C/C进阶–pthread_creat() return 1失败) 1 介绍 1.1 man pthread_create PTHREAD_CREATE(3) Linux Programmers Manual …

buu [AFCTF2018]MyOwnCBC 1

题目描述: 三份文件 #!/usr/bin/python2.7 # -*- coding: utf-8 -*-from Crypto.Cipher import AES from Crypto.Random import random from Crypto.Util.number import long_to_bytesdef MyOwnCBC(key, plain):if len(key)!32:return "error!"cipher_t…

github指令运用指南

✨求关注~ 😀博客:www.protaos.com GitHub是一个基于Git版本控制系统的代码托管平台,它提供了方便的协作工具和版本管理功能。本指南将介绍如何使用GitHub的基本指令,包括安装和使用教程、在VS Code中上传下载同步代码&#xff0c…

Python爬虫之BeautifulSoup详解

Beautiful Soup(以下简称BS)是Python中最为流行的HTML和XML解析库之一。它的主要目的是从HTML或XML中提取数据。相比于Python内置的HTML解析库,BS提供了更加简单易用的API,使得编写爬虫或者数据清洗的工作更加高效、简单。 1.安装…

Godot引擎 4.0 文档 - 循序渐进教程 - 创建实例

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Creating instances — Godot Engine (stable) documentation in English 创建实例 在前面的部分中,我们看到场景是以树结构组织的节点集合,以…

HashMap源码详解

文章目录 简单介绍提出问题流程说明及验证put元素的流程怎样找到要存储的下标位置的?什么时候会扩容? 加载因子、阈值这些有什么含义?怎样扩容的?扩容的流程.链表可以转成红黑树, 那会从红黑树转成链表吗?什么时候会从链表转成红黑树 小总结 简单介绍 HashMap是Java中最最…

数据库中的时间使用字符串来表示的 在查询数据的时候如何让将这个字符串和时间转变

每个数据库都有数据类型的转换函数.而不同的数据库其具体函数稍有区别,但大同小异. 下面以oracle数据库为例,给你解释一下,因为目前oracle数据库用的很普遍,也是以后数据库发展的主流方向. oracle的数据类型转换分为自动类型转换和强制类型转换,常用的转换函数有 TO_CHAR,TO_DA…

Operators

Operators DataStream Transformations # DataStream 程序 在Flink里是一个常规操作,对数据流进行转换(mapping, filtering, reducing) Functions 转换接收用户定义的函数作为输入, 以定义转换的功能 Implementing Function Interfaces # 不同的函数接口用于不同的转换在…