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.rhkb.cn/news/454001.html

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

相关文章

最佳简历--JAVA程序员的项目经验如何写

小熊学Java全能学习+面试指南:https://www.javaxiaobear.cn 首先你要明确,你能干什么,包括你自己编写的专业技能,到底会不会,怎么运用到技术上的? 1、你能干什么? 你能干什么,其实就展现你的能力,这是简历中最重要的部分,你需要证明前面说的你会的东东; 这就有点…

三周精通FastAPI:1 第一步入门

FastAPI是一个非常棒的python web和api框架,准备用三周的时间“精通它” 学习流程参考FastAPI官网的用户教程:教程 - 用户指南 - FastAPI 学前提示 运行代码 所有代码片段都可以复制后直接使用(它们实际上是经过测试的 Python 文件&#x…

【前端】如何制作一个自己的网页(14)

当我们还需要对网页中的内容进行局部样式的修改。这时候,就需要用到HTML中的重要元素:span。 span是一个行内元素,可以对HTML文档中的内容进行局部布局。 如图,我们给标题和段落元素的部分内容设置了各种样式。 接下来&#xff0…

树上启发式合并(详解)

核心思想 借用了一个节点到根的路径上轻边个数不会超过logn条。 故重节点保留&#xff0c;轻节点删去&#xff0c;多重统计。 实际复杂度&#xff08;nlogn&#xff09; 例题 Lomsat gelral - 洛谷 AC 代码 #include<bits/stdc.h> #define int long long using na…

新型电力系统精细化时序模拟分析软件

一、背景意义 在“碳达峰碳中和”及“新型电力系统”战略引领下&#xff0c;新型电力系统电力电量平衡分析成为电力系统规划运行模拟仿真的必要环节。近年来&#xff0c;随着电网新能源渗透率逐渐提升&#xff0c;储能等灵活性调节资源大幅增加&#xff0c;传统的基于典型曲线…

qiankun 应用之间数据传递

qiankun 应用之间数据传递 全局共享 initGlobalState qiankun initGlobalState API 单击前往 qiankun 内部提供了 initGlobalState 方法用于注册 MicroAppStateActions 实例用于通信&#xff0c;该实例有三个方法&#xff0c;分别是onGlobalStateChange、setGlobalState、of…

小巧设计,强大功能:探索SoC模块的多样化功能

LoRa-STM32WLE5模块基于ST的STM32WLE5芯片&#xff0c;采用LoRa调制&#xff0c;适用于超远程和超低功耗无线电解决方案。搭载高性能Arm Cortex-M4核心&#xff0c;频率高达48 MHz&#xff0c;支持256 KB闪存和64 KB运行内存&#xff0c;具备安全性增强功能。广泛应用于安防、智…

C++进阶之路:日期类的实现、const成员(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

ue5 扇形射线检测和鼠标拖拽物体

这里的NumTrace是要发射几根射线&#xff0c;Degrees Per Trace是每根射线之间的角度&#xff0c; 例如 要在角色面前实现一个180度的扇形射线检测&#xff0c;就需这两个变量乘起来等于180 TraceLength是射线的长度 下面是鼠标拖动物体逻辑&#xff0c;很简单 这里的Floor和…

文心快码 - Baidu Comate 让AI帮你提高生产力|AI代码助理

码随心动&#xff0c;快人一步&#xff0c;更懂你的智能代码助手 基于文心大模型&#xff0c;结合百度编程大数据&#xff0c;为你生成优质编程代码。文心快码 - Baidu Comate&#xff0c;更懂你的AI编程伙伴&#xff0c;研发效率提升好帮手。 一、更懂研发知识 开发速度快 构…

提示词高级阶段学习day3.1

第三个类型就是让模型做信息的转化 最直观的例子就是翻译 去翻译英文&#xff0c;它的效果都非常好 除此之外&#xff0c;给大家举一个让大模型翻译代码的例子&#xff0c; 还有就是让大模型写代码的 这是一个数据分析场景&#xff0c;其实数据分析场景一直追求的就是一个…

LeetCode 精选 75 回顾

目录 一、数组 / 字符串 1.交替合并字符串 &#xff08;简单&#xff09; 2.字符串的最大公因子 &#xff08;简单&#xff09; 3.拥有最多糖果的孩子&#xff08;简单&#xff09; 4.种花问题&#xff08;简单&#xff09; 5.反转字符串中的元音字母&#xff08;简单&a…

企业级调度器 LVS

集群和分布式基础知识 系统性能的扩展方式 当一个系统&#xff0c;或一个服务的请求量达到一定的数量级的时候&#xff0c;运行该服务的服务器的性能和资源上限&#xff0c; 很容易成为其性能瓶颈。除了性能问题之外&#xff0c;如果只部署在单台服务器上&#xff0c;在此服务…

iOS Swift逆向——deMangle过程中的偏移计算

碰到好多函数最开始都会调用这个函数&#xff0c;xref了一下&#xff0c;发现有上万个xref。 __int64 __fastcall sub_1000B6ED0(__int64 *a1) {__int64 result; // x0result *a1;if ( result < 0 ){result swift_getTypeByMangledNameInContext((char *)a1 (int)result…

Hyper-V安装使用教程

操作系统&#xff1a;Windows Server 2019 Datacenter 1.安装Hyper-V (1)控制面板 > 程序 > 启用或关闭 Windows 功能 (2)勾选Hyper-V > 安装重启 2.Hyper-V管理器 (1)连接到服务器 > 本地计算机 (2)虚拟交换机管理器 > 新建虚拟网络交换机 > 外部 > 创…

Spark的安装配置及集群搭建

Spark的本地安装配置&#xff1a; 我们用scala语言编写和操作spark&#xff0c;所以先要完成scala的环境配置 1、先完成Scala的环境搭建 下载Scala插件&#xff0c;创建一个Maven项目&#xff0c;导入Scala依赖和插件 scala依赖 <dependency><groupId>org.scal…

国家唯一认证的防脱发产品,双11速速囤

脱发的一定都深刻知道掉发严重反复折磨的痛苦&#xff01;为了能早点调理好掉发严重的问题&#xff0c;真的买了一堆育发液&#xff0c;也是踩了不少雷&#xff0c;今天就把用过好用的分享出来&#xff0c;有需要的趁着双十一赶紧囤点~ 一、露卡菲娅防脱精华液&#xff1a;科技…

【硬盘知识】记一次买 希捷 二手 清零盘 的经历(怎么检测硬盘的好坏、健康程度)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

信息搜集 ---开发框架识别

开发框架识别 插件推荐 插件商店搜索wappalyzer Python - Django&Flask Django 1、wappalyzer插件 2、返回数据包的特征字段 Set-Cookie:expires Flask 1、wappalyzer插件 2、返回数据包的特征字段 Set-Cookie:expires 或 Etag: "flask PHP - ThinkPHP&Lar…

光纤光学——弱导光纤与线偏振模

一、基本思想 弱导光纤&#xff1a;n1≈ n2 , k0n1 ≈ k0n2&#xff0c;亦即&#xff1a; k0n1 ≈ k0 n2 ≈ 光线与纤轴的夹角小&#xff1b;芯区对光场的限制较弱&#xff1b; 消逝场在包层中延伸较远。 弱导光纤场的特点&#xff1a; HEι1,m模式与EHι-1,m色散曲线相近…