2024 四川省大学生信息安全技术大赛 安恒杯 部分 WP

文章目录

一、前言

WP不完整,仅供参考!

除WEB外,其余附件均已打包完毕,在这里也是非常感谢师傅的附件支持!

123网盘下载:

https://www.123pan.com/s/q2J1jv-vRJvd?提取码:0905
提取码:0905

二、MISC

unzip-png

解题思路

附件下载,得到一个txt,打开仔细观察不难发现这个头部有点像zlib的头部(789c),可能有的师傅刷题刷的少,zlib是什么他不知道,不过没关系哈,这里我们也简单说说:

zlib文件

我们在分析文件时,789C 是 zlib 数据流 的一个特征性的起始字节,我们可以通过这些字节来识别它是 zlib 格式的压缩数据。这是因为 zlib 压缩流的开头包含一个压缩头部,并且其中的前两个字节具有特殊的含义。

  1. zlib 头部格式

zlib 数据流的头部由两个字节组成,具体格式如下:

  • 第一个字节(8位):压缩方法和信息(CMF,即 Compression Method and Flags
  • 第二个字节(8位):额外的标志和校验值(FLG,即 Flags
  1. 具体含义
  • 78 :第一个字节 78 的前四位 0111 表示使用 DEFLATE 压缩算法(zlib 默认使用 DEFLATE),后四位表示压缩窗口大小。
  • 9C :第二个字节 9C 代表某种默认设置,且最后5位是用来计算校验和(FCHECK)的。
  1. 常见的 zlib 头部

zlib 文件头的常见前两字节是:

  • 78 01:表示最低压缩级别,几乎不压缩
  • 78 9C:表示默认压缩级别(常见,压缩比和速度均衡)
  • 78 DA:表示最高压缩级别(压缩率最高,但速度较慢)

TXT文本

当然这里如果一时半会看不出是zlib也没有关系,我们可以直接请出我们的工具:cyberchef

https://cyberchef.org/

哎,这里有的师傅可能就有疑问了,比赛不是离线的嘛?怎么还可以使用在线工具呢?因为人家"cyberchef"本来就是可供本地下载离线解码!

cyberchef下载

直接将1.txt拖进去即可,cyberchef会自动识别并且帮助解码(当然只能识别出一些简单的,复杂一些的就需自己分辨了)

最后经过一次"From Hex"解码,以及"Detect File Type"也是成功识别出是zlib文件(这里全程是cyberchef自动识别出的)

那既然已知晓是zlib,这里我们直接将用于自动识别文件的Detect File Type进行替换Zlib Inflate即可

直接在cyberchef的搜索栏中查找关键词zlib就能发现,接着选中Zlib Inflate进行拖动至Recipe中进行解码即可,最后看见89 50 4E 47就熟悉多了吧?

最后导出解码的数据,保存即可:

哎,那这里有的师傅可能就要急了,他可能会直接将刚刚导出的download.dat直接改一个后缀,修改为download.png,以为就能直接显示图片,但其实并不是这样操作的:

在cyberchef中,导出的数据都是原数据,这是什么意思呢?通俗易懂来说,你就只是单纯导出了89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52这一串数字,人家并不会直接帮你转换为png图片(也并不是单纯修改后缀为png那么简单),当然我们可以选中导出的download.dat使用010打开分析一下

这样一打开来进行查看,跟普通的png图片是不是少了些什么?那我们到底要怎么做呢,其实也很简单,这里以010为例,我们可以直接新建一个十六进制的文件,将刚刚得到的数据复制并且"Ctrl+shift+v"粘贴至新建的十六进制的文件中:

得到

最后Ctrl+s保存为1.png即可,这时候我们再去打开图片,会发现还是什么也看不见:

那既然不能正常显示,肯定是图片数据出现了问题,那我们接着返回010中仔细观察一下:

那这里我们首先来简单的了解一下PNG图片的组成部分;

一个 PNG 图片 一般由多个部分组成,主要包括几个关键的 数据块(chunk) ,其中最常见的部分有 IHDRIDAT 块。

PNG 文件的主要组成部分:

  1. 文件签名(PNG Signature)

    • PNG 文件以一个 8 字节的固定签名开始,标识文件是 PNG 格式。
    • 这个签名的十六进制值是 89 50 4E 47 0D 0A 1A 0A
  2. 数据块(Chunks): PNG 文件接下来的部分由一系列数据块组成,每个数据块有其特定的功能。每个数据块包含四部分:长度、类型、数据和 CRC 校验。

    常见的数据块有:

    • IHDR(Image Header Chunk)

      • 这是 PNG 图片的头部,它是第一个数据块,包含图片的基本信息,比如宽度、高度、位深度、颜色类型、压缩方法、滤波器方法和交错方法。
      • IHDR 块非常重要,任何 PNG 图片都必须有一个 IHDR 块。
      • 大小通常是 13 字节。
    • PLTE(Palette Chunk,调色板块)

      • 用于定义图像的调色板(仅在使用调色板的 PNG 图片中出现)。这部分包含索引颜色值。
    • IDAT(Image Data Chunk)

      • IDAT 块包含图像的压缩数据 ,可以有多个 IDAT 块。PNG 使用 zlib/DEFLATE 算法对图像数据进行压缩。
      • IDAT 块的数据在解压后会还原为图像的像素数据。
    • IEND(Image End Chunk)

      • 标志着 PNG 文件的结束,IEND 是最后一个数据块。
      • 没有数据内容,只有一个结束标志。

其他数据块(可选):

  • tEXt / zTXt / iTXt:用于存储文本信息,比如作者、版权等。
  • gAMA:用于定义图像的伽马值。
  • tIME:用于记录图像的修改时间。

小结:

  • IHDR 是 PNG 文件的头部数据块,定义了图像的基本信息。
  • IDAT 是存储图像压缩数据的主要部分,通常会有多个 IDAT 块。
  • IEND 是结束块,标志着 PNG 文件的结束。

所以,IHDR 和 IDAT 都是 PNG 图片的重要组成部分,IHDR 提供基本信息,而 IDAT 主要包含压缩后的图像数据。

所以这里我们重新使用010打开1.png,就会发现原本IDAT的位置被CTF2/CTF1所占据了!

那这里我们肯定是要将CTF2/CTF1替换为IDAT,所以这里我们直接将IDAT进行Hex编码进行最后进行插入!

得到:49 44 41 54

进行替换

最后Ctrl+s进行保存,打开图片:

发现打开是可以打开了,但是奇怪的是什么也没有,如果有的师傅靠自己做到这里,其实已经很好了,因为后面这一步有点考验脑洞了,为什么这样说呢?如果在修改IDAT之前有观察仔细的师傅会发现他是CTF2在前CTF1在后,那这能代表什么嘛?其实就是变相的在告诉你:我chunk数据块弄反了,你要改回来!

那如果这里实在想不到呢?想不到就出不来呗~

那这里我们可以直接新建一个十六进制文件,将文件头部(chunk[0])先复制过去:

得到:

将chunl[2]复制过去:

得到:

接着再将chunl[1]复制过去:

最后再将图片的尾部一一进行复制粘贴补全即可,Ctrl+s进行保存2.png,打开2.png即可发现:

最后得出一张图片,一眼看过去就感觉宽高有一些问题,当然如果不确定我们可以直接丢进工具:随波逐流中进行分析一下,或者kali,它们都是可以自动校验png图片的CRC:

这里我是直接丢进随波逐流中(当然也可以自己手动修改一下宽高):

最后它会直接帮你修复原本的png图片宽高,打开即可发现flag:

至此;

复制代码
flag{d01adf92-f7a8-7fc6-c89f-0e6cf6f68e6a}
拓展

Detect File Type简介

在 CyberChef 工具中,Detect File Type 是用来自动检测输入文件或数据的类型的操作。它通过分析输入的二进制数据或文本,识别出该数据的格式或文件类型。

工作原理:

  • 文件头检测:它会首先分析文件的头部,查找已知文件类型的标识(魔数)。
  • 模式匹配:通过匹配已知文件结构的特征,判断文件的格式。
  • 内容分析:有些情况下,它可能会分析文件的整体内容特征,比如文本编码或压缩格式。

示例:

  • 如果输入一个 PNG 图片文件,CyberChef 的 Detect File Type 会识别出 "PNG image"
  • 如果输入一个 ZIP 压缩文件,它会显示 "ZIP archive"
  • 如果输入一段 zlib 压缩数据,它也可能检测出 "zlib compressed data"
第47张图片

解题思路

附件下载,得到一张图片jpg图片:

我们使用010打开简单分析一下:

往下翻一些很快就发现一个可能是ROT47的编码

不是很了解的ROT47编码特征的师傅也没关系,这里我们正好来一起简单说说:

ROT47 的编码特征:

  1. 字符范围 :ROT47 对应的字符集是 33-126 的 ASCII 字符,包含可打印的符号、数字、字母和一些标点符号,总共有 94 个字符。

    • 例如,常见的字母 (A-Z, a-z)、数字 (0-9)、标点符号(如 !, @, #, &, *)等都在此范围内。
  2. 字符旋转 :每个字符通过向右"旋转"47个位置来编码。如果超出126,就从33重新开始。这意味着编码和解码是对称的,即同一个函数可以用于编码和解码。

  3. 对称加密:类似于 ROT13,ROT47 的编码和解码方式是相同的,因此加密一次后,再加密一次就会还原成原始文本。

例子:

  • A(ASCII 65)通过 ROT47 编码后变成 r(ASCII 114)。
  • !(ASCII 33)通过 ROT47 编码后变成 P(ASCII 80)。
  • HELLO 编码后会变成 w6==@.

那从7=28Lf6f63347\7c7d\67gb\6dc7\a7b6g3g4b5ad编码中哪里能看出是ROT47呢?

  1. 字符范围
  • 字符串中的字符包括 数字 (如 7, 2, 6)、字母 (如 L, f, g, b)以及 符号 (如 =, \, a\7c7d等),这些字符都在 ASCII 33 到 126 之间,这是 ROT47 处理的字符范围,因此符合 ROT47 的字符集要求。
  1. 字符混淆
  • 由于 ROT47 是对字符进行位移(47个位置)的替换编码,该字符串是由混合的字母、数字、符号构成的,这是 ROT47 加密后的典型表现。正常文本被 ROT47 编码后,会出现类似这种"乱码"样的形式。
  1. 非对称性内容
  • ROT47 编码后字符会出现符号、字母和数字交错的情况。这是由于 ROT47 对可打印字符范围内的所有字符(包括字母、符号、数字)进行统一的位移,导致字符分布看起来无规律。
  1. 可解码还原
  • 如果这个字符串是经过 ROT47 编码的,它可以通过再次应用 ROT47 进行解码,还原成原始的明文内容。由于 ROT47 的加密和解密是对称的,同样的函数可以解码出明文。

最后其实如果实在不明白的还有一点就是,这个题目的名称也可以看出一点,当然如果有脑洞的话是可以想出的,毕竟题目名都叫:第47张图片

或者直接将整张文件拖进去进行ROT47解码也是可以发现的:

至此;

复制代码
flag{7e7ebbcf-f4f5-ef83-e54f-2f3e8b8c3d25}
重要的文件

解题思路

暂无

三、WEB

推荐(baozongwi师傅的):

四川省赛2024------web

四、CRYPTO

暂无,附件已打包完毕,可自取

五、REVERSE

暂无,附件已打包完毕,可自取

相关推荐
漏洞谷3 天前
白帽子为什么几乎都绕不开 httpx:一款 HTTP 资产探测工具的技术价值
web安全·漏洞挖掘·安全工具
用户962377954486 天前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主7 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954489 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机9 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机9 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954489 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star9 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954489 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher11 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全