PNG隐写入门赛

15 篇文章 2 订阅

题目说明

附件下载:https://ctfshow.lanzous.com/iDEiVmr8m4d

说明:

0、本场比赛共有18题,但只有1个附件文件(见第1题),所有flag均可以从附件中获取;
1、所有的flag开头和结尾均为#,中间由字母、数字或下划线组成;
2、本场比赛不使用任何*可以*设置密码的隐写方法,包括可以将密码留空的隐写方法;
3、原理类似的隐写方法在确保不互相干扰的前提下可能会以多种方式使用;
4、如果从附件提取的隐写信息为字符串形式,可能需要转码得到指定格式的结果;
5、如果从附件提取的隐写信息为另一张图片,该图片不会再包含隐写信息,即不存在套娃隐写;
6、所使用的字体均为微软雅黑,若有字符无法分辨,请与字体对比查看;
7、取得类似#abcd_1234#的字符串后,请计算其MD5值(包含头尾的#号);
8、每道题目都给出了一段MD5值,请找到MD5值匹配的题目后,将flag包上ctfshow{}格式提交。
One PieNG 1		342f08112d4ffb0577f49e89a2a18fa2
One PieNG 2		d64fc33636dda50babdde6b775d8cf10
One PieNG 3		8b8bc8c6aa81e7b955660fba3575af63
One PieNG 4		c35bc750588f620f49e83493f4125bfd
One PieNG 5		91848bee27655dc0da45006f467a59fb
One PieNG 6		335b63183f19e4fe1b9bd734af81403e
One PieNG 7		e18d9aa18b35ae3a702875beab14cc86
One PieNG 8		8d4ae0eed967e9936ee5373f0f58829c
One PieNG 9		9734a5d18504ef6a31c2c104b224f0df
One PieNG 10	cec1969402261bd550f1b3d0c0ccc655
One PieNG 11	3e703086b0e2585eff041cbd186f1bd4
One PieNG 12	fba2e6b912ab1a308c6b1438da31fbb8
One PieNG 13	23e4464f1b458a062fb13e155a72f999
One PieNG 14	d325d41389ddb0c3fdec30e51565fda3
One PieNG 15	ad9d95f270d91aed3ba2203487bf01cd
One PieNG 16	7dc6506ac3d4c7a99587c9b3cbf43798
One PieNG 17	170cee5e9bd6dd81021d8533490a4b8b
One PieNG 18	5f6b859726bd17bd5fb4905c4420b269

One PieNG 1

文件名称
在这里插入图片描述

One PieNG 2

在这里插入图片描述

One PieNG 3

使用python脚本爆破图片高度

import os
import binascii
import struct
misc = open("ctfshow.png","rb").read()
#print(misc[0x0c:0x0f+1])
# 爆破高

crc32_bytes = misc[0x1d:0x20+1]# 读出bytes
crc32_hex_eval = eval('0x' + crc32_bytes.hex())#bytes串 -> hex串  ->  值
print(crc32_hex_eval)
for i in range(4096):
    data = misc[0x0c:0x0f+1] + misc[0x10:0x13+1] + struct.pack('>i',i)+ misc[0x18:0x1c+1]  #IHDR数据
    crc32 = binascii.crc32(data) & 0xffffffff
    if crc32 == crc32_hex_eval : #IHDR块的crc32值
        print(i)
        print("height_hex:"+ hex(i))

运行脚本得到

2871077429
1463
height_hex:0x5b7

在这里插入图片描述
将0297修改为05b7,可以得到
在这里插入图片描述

One PieNG 4

上面脚本计算出,i=1463,直接把高改为1463
在这里插入图片描述

One PieNG 5

Blue通道最低位
在这里插入图片描述

One PieNG 6

使用stegsolve的data extract模块,除Alpha均勾选0通道
在这里插入图片描述

One PieNG 7

勾选Red通道和Green通道的最低位0,然后选择Column
在这里插入图片描述

One PieNG 8

全部勾选最高位,选择GBR
在这里插入图片描述

One PieNG 9

除Alpha通道外均勾选1、2位,发现PK压缩包,另存为a.zip
在这里插入图片描述
删去多余的部分
在这里插入图片描述
解压压缩包得到
在这里插入图片描述

One PieNG 10

使用010 editor查看十六进制
在这里插入图片描述
使用exiftool工具也可以得到
在这里插入图片描述
也可以使用在线EXIF查看器
在这里插入图片描述

One PieNG 11

上面使用在线EXIF查看器,可以发现DocumentAncestors栏有可疑字符串

b58/3AjtPrXQJuhFwguK7nqu4ZpsqMLwU

Base58解码/后面的内容
在这里插入图片描述

One PieNG 12

同样city一栏中有十六进制字符串

23415F6B65795F6672306D5F50683074307368307023

16进制转字符串
在这里插入图片描述

One PieNG 13

在stegsolve主页面,选择File Format
在这里插入图片描述
套神的方法:
010查看变量窗口(打开方式:视图–检查器窗口–变量,需要下载png摸板,点击模板–摸板储存库–png模板)
在这里插入图片描述

One PieNG 14

使用tweakpng工具打开图片,连着十个警告
在这里插入图片描述
删去九个IDAT以及tXEt
在这里插入图片描述
另存为flag.png
在这里插入图片描述

One PieNG 15

使用binwalk分离图片
在这里插入图片描述

One PieNG 16

pngdebug检测图片,第4-12共9个IDAT块都报错,查看发现这些错误的CRC32值都是00开头,且后三个字节都在ASCII可打印字符范围内

...

0x0000028D      chunk-length=0x00010000 (65536)
0x00000291      chunk-type='IDAT'
0x00010295      crc-code=0x00234831
>> (CRC CHECK)  crc-computed=0x94F55588         =>      CRC FAILED


0x00010299      chunk-length=0x00010000 (65536)
0x0001029D      chunk-type='IDAT'
0x000202A1      crc-code=0x0064655F
>> (CRC CHECK)  crc-computed=0xBA2406E1         =>      CRC FAILED


0x000202A5      chunk-length=0x00010000 (65536)
0x000202A9      chunk-type='IDAT'
0x000302AD      crc-code=0x00683378
>> (CRC CHECK)  crc-computed=0xCD6A57C7         =>      CRC FAILED


0x000302B1      chunk-length=0x00010000 (65536)
0x000302B5      chunk-type='IDAT'
0x000402B9      crc-code=0x00643437
>> (CRC CHECK)  crc-computed=0x9EC196CD         =>      CRC FAILED


0x000402BD      chunk-length=0x00010000 (65536)
0x000402C1      chunk-type='IDAT'
0x000502C5      crc-code=0x00615F31
>> (CRC CHECK)  crc-computed=0x1D1C51CC         =>      CRC FAILED


0x000502C9      chunk-length=0x00010000 (65536)
0x000502CD      chunk-type='IDAT'
0x000602D1      crc-code=0x006E5F63
>> (CRC CHECK)  crc-computed=0xD41FCAD9         =>      CRC FAILED


0x000602D5      chunk-length=0x00010000 (65536)
0x000602D9      chunk-type='IDAT'
0x000702DD      crc-code=0x0068756E
>> (CRC CHECK)  crc-computed=0x655D563D         =>      CRC FAILED


0x000702E1      chunk-length=0x00010000 (65536)
0x000702E5      chunk-type='IDAT'
0x000802E9      crc-code=0x006B5F43
>> (CRC CHECK)  crc-computed=0xCB1875FD         =>      CRC FAILED


0x000802ED      chunk-length=0x00002646 (9798)
0x000802F1      chunk-type='IDAT'
0x0008293B      crc-code=0x00524323
>> (CRC CHECK)  crc-computed=0x19FE70D3         =>      CRC FAILED

...

这几个异常的CRC值提取出来

0x00234831
0x0064655F
0x00683378
0x00643437
0x00615F31
0x006E5F63
0x0068756E
0x006B5F43
0x00524323

整理一下得到

23483164655F683378643437615F316E5F6368756E6B5F43524323

然后十六进制转字符串

#H1de_h3xd47a_1n_chunk_CRC#

One PieNG 17

使用zsteg工具检测
在这里插入图片描述

One PieNG 18

foremost分离图片
在这里插入图片描述

总结:主要是各种工具的运用,有些工具没见过,还是太菜了

参考:https://blog.csdn.net/qq_42880719/article/details/114825260

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Atkxor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值