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

文章目录

      • 一、前言
      • 二、MISC
        • unzip-png
          • 拓展
        • 第47张图片
        • 重要的文件
      • 三、WEB
      • 四、CRYPTO
      • 五、REVERSE

一、前言

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web应用框架-Django应用基础(2)

1.请求响应对象 1.1 请求对象HttpRequest测试 #hello\views def http_request(request):#1.获得请求方式print(request.method)#2.获得请求头信息#2.1 获取META中的请求头信息headers request.METAprint(headers)#2.2 获取请求头信息的内容ua request.META.get(HTTP_USER_AG…

[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件

目录 问题: 方法: 补充:创建conda虚拟环境 参考文档:pycharm找不到conda可执行文件怎么办?-CSDN 问题: 1.显示:未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…

通过前端UI界面创建VUE项目

通过前端UI界面创建VUE项目,是比较方面的一种方式,下面我们详细分析一下流程: 1、找到合适目录 右键鼠标,点击在终端打开 2、开始创建 输入 vue ui 浏览器弹出页面 3、点击Create项目 显示已有文件列表,另外可以点击…

ChatGLM4重磅开源! 连忙实操测试一波,效果惊艳,真的好用!附带最新相关资料和喂饭级实操推理教程!!

本文目录 GLM4重磅开源啦 GLM4系列版本介绍 GLM4大模型能力测评结果 经典测评任务结果 长文本能力 工具调用能力 多模态能力 手把手实操GLM-4-9B-Chat推理预测&&效果展示 GLM4运行硬件和环境要求 配置对应的库环境 使用peftbitsandbytes 进行4位量化推理 进…

【大模型报告】2024年中国AI大模型场景探索及产业应用调研报告【免费下载】

1.行业概况 市场规模: 2023年中国AI大模型行业规模达到147亿元,预计到2028年将突破1000亿元,复合增速超过50%。 应用价值: AI大模型技术能够提升生产要素的产出效率,并提高数据要素在生产要素组合中的地位。 应用路…

本地生活便民信息服务小程序源码系统 PHP+MySQL组合开发 带完整的安装代码包以及搭建部署教程

系统概述 地方门户分类信息网站源码系统是一个基于PHP和MySQL开发的强大平台,旨在帮助用户轻松搭建地方性的分类信息网站。该系统集成了众多实用功能,支持用户自由发帖、浏览和搜索各类信息,如二手交易、求职招聘、房屋租售、生活服务、商家…

Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)

文章目录 简介前置概念.git目录objects目录refs目录HEAD文件 resetreflog 与 reset --hardrevert(撤销指定提交)stashdiff工作区与暂存区差异暂存区与HEAD差异工作区与HEAD差异其他比较 restore、checkout(代码撤回)merge、rebase、cherry-pick 简介 本文将介绍Git几个核心概念…

ubuntu22.04下GStreamer源码编译单步调试

前言 本文会通过介绍在linux平台下的GStreamer的源码编译和单步调试example实例。官网介绍直接通过命令行来安装gstreamer可以参考链接:Installing on Linux。 这种方法安装后,基于gstreamer的程序,单步调试的时候并不会进入到gstreamer源码…

李飞飞:不要数字孪生,要数字表兄弟,一张照片生成机器人训练场景

我们很多人都听说过数字孪生(digital twin),在英伟达等公司的大力推动下,这种高效运营工作流程的方法已经在很多工业场景中得到应用。 但你听说过数字表亲(digital cousin)吗? 近日&#xff0…

2024年【浙江省安全员-C证】复审考试及浙江省安全员-C证证考试

题库来源:安全生产模拟考试一点通公众号小程序 浙江省安全员-C证复审考试是安全生产模拟考试一点通总题库中生成的一套浙江省安全员-C证证考试,安全生产模拟考试一点通上浙江省安全员-C证作业手机同步练习。2024年【浙江省安全员-C证】复审考试及浙江省…

vue3环境变量和模式

文章目录 一、vite文档介绍环境变量1.环境变量1.1创建文件 2.NODE_ENV 和 模式**2.1process.env.NODE_ENV(Node.js 环境变量)**2.2 **模式(mode)** 二、loadEnv获取环境变量(针对在env文件夹下)2.1创建环境…

FPGA图像处理之三行缓存

文章目录 一、前言二、FPGA实现三行缓存的架构三、Verilog代码实现四、仿真验证五、输入图像数据进行仿真验证 一、前言 在 FPGA 做图像处理时,行缓存是一个非常重要的一个步骤,因为图像输入还有输出都是一行一行进行的,即处理完一行后再处理…

Linux 安装 JDK 环境

最近有小伙伴不怎么会在 Linux 服务器安装 JDK 环境,小格子给大家总结分享一下,下次直接看这篇文章就可以了。下面以 CentOS 为例。 1. 下载 JDK 安装包 由于 JDK1.8.202 是最后一个免费版本,建议下载此版本。由于在 Oracle 官方网站下载需…

JS | JS之元素偏移量 offset 系列属性详解

目录 一、offset 概述 定位父级 offsetParent 偏移量 offsetWidth offsetHeight offsetLeft offsetTop 计算页面偏移 注意事项 二、offset 与 style 区别 偏移offset 样式style 三、案例 ★ 案例:获取鼠标在盒子内的坐标 ★ 案例:模态框…

软件测试学习笔记丨Pytest的使用

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22158 1. 简介 pytest是一个成熟的全功能python测试框架测试用例的skip和xfail,自动失败重试等处理能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/ap…

2024互联网大厂营收排名:京东/阿里/华为前三,超多技术岗都在热招!

2024年已经过去一大半,各大互联网大厂的竞争如火如荼,营收都取得了不俗的成绩,京东、阿里、华为分别占领前三! 第四第五名则为华为和拼多多。 根据排行榜里的公司名单,小码特意为大家整理了一批各大厂的招聘岗位。 阿…

【论文#快速算法】Fast Intermode Decision in H.264/AVC Video Coding

目录 摘要1.前言2.帧间模式决策概览2.1 H.264/AVC中的帧间模式决策2.2 发现和动机 3.同质性和平稳性的确定3.1 同质性区域的确定3.2 稳定性区域的决定3.3 整体算法 4.实验结果4.1 IPPP序列的测试4.2 IBBP序列测试 5.结论 《Fast Intermode Decision in H.264/AVC Video Coding》…

基础数据结构——数组(动态数组,二维数组,缓存与局部性原理)

1.概述 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识 因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来,例如&…

生产力工具|vscode for mac的安装python库和使用虚拟环境(一)

一、在vscode中运行python代码(mac或windows) (一)在vscode中安装Python插件 若想在vscode中高效率的编辑Python代码,需要安装Python插件,点击下图中红框内的按钮: 然后在左上角的搜索框中输入…

Vue前端开发2.1 单文件组件

文章目录 一、单文件组件概念二、单文件组件构成1. 模板(Template)2. 样式(Style)3. 逻辑(Script) 三、单文件组件演示1. 创建Vue项目2. 启动Vue项目3. 用VS Code打开项目4. 清空样式文件代码5. 创建欢迎组…