CTF Misc入门篇

在CTF比赛中,misc方向是必考的一个方向,其中,图形隐写是最最常见的类型。

先从Misc开始入门,一般会借助CTF SHOW解题平台,解题,然后进行技巧总结。

目录

图片篇(基础操作)

misc1

misc2

misc3

misc4

图片篇(信息附加)

misc5

misc6

 misc7

misc8

misc9

misc10 

misc11

misc12

 misc13

misc14

msic15

misc16

misc17

misc18

misc19

misc20

 misc21

misc22

misc23

misc41

总结

文件伪装

文件附加数据

文件拼接

元数据隐写

编码转换隐写


图片篇(基础操作)

misc1

jie直接下载文件解压后打开图片就能看到flag。

misc2

解压文件打开misc2.txt,发现文件头格式

可以知道这是一个png文件,所以讲文件扩展名改为png就可以查看到flag。

misc3

解压文件,发现一个后缀为.bpg的文件,查看文件

发现文件头格式已经和文件后缀相对应,那么可以去寻找支持查看bpg图片的软件,例如BandiView或者Honeyview。

misc4

解压文件,发现六个文本文件,还是开始查看文件格式和后缀是否相对应:

可以看到每个文件的格式都不太一样,只需要将每个文件后缀名改成相对应的就能够查看到了。

图片篇(信息附加)

misc5

只有一个图片,显示:

那么还是照样查看这个文件的内容,发现在文件最后藏有flag

misc6

同样的,这里只有一张图片,打开也没有flag

cat查看这个文件的内容,先查看属性和后缀名有没有问题,大小有没有问题,这里都没有,那我们要去看看文件内容能不能发现什么。

发现内容太多,没有办法有效地查看内容,那我们可以利用grep命令查看是否包含有关“ctf”或者“flag”关键词的内容

-a:将二进制文件(比如jpg文件)当作文本文件处理,避免grep跳过二进制文件

-F:将搜索词当作固定字符串(非正则表达式)

当然,在Windows系统直接使用文件编辑器打开Ctrl+F搜索内容

 misc7

跟misc6一样,过程都要来一遍,不要闲麻烦

misc8

解压后文件和上面的普通一样,一步步尝试下来,没有发现内容还有后缀名等有什么问题,这里要新认识到一个图片里面存在多个文件的解法。

这里是属于文件直接拼接(还有其他的隐藏方式后面应该会讲),将其他文件直接追加到图片的尾部,图片查看器会忽略多余数据,但工具可以提取。

接下来使用binwalk工具来分析是否包含多个文件

很明显,这里包含了两个图片文件,接下来尝试用binwalk工具进行分离

分解出一个_misc8.png.extracted文件夹,查看发现不是想要的

那么再使用foremost工具进行分解文件

生成一个output文件夹,但是打开这个output文件夹是没有发现文件的

这是因为生成的文件kali没有执行权限

 那我们修改这个文件以及其子文件的权限

-R 用于递归地更改文件和目录的权限

权限通过八进制数字表示:4=读 (r),2=写 (w),1=执行 (x)

打开文件就看到flag了。

binwalk是基于文件头/尾签名进行扫描,它的处理文件能力比较弱,适用于快速检测是否存在内嵌文件

foremost是基于文件头和文件结构进行深度分析,处理分解能力强,适用于文件损坏或者碎片化时候,在binwalk分解失败时使用

misc9

跟misc6一样

misc10 

跟misc8一样,使用binwalk检测内嵌文件并尝试分解,如果不行使用foremost进行分解,这里使用binwalk就可以分解成功了

misc11

前面跟misc9一样,先查看文件头没有问题,并且文件内容搜索不到flag,然后使用binwalk分析文件是否存在多个文件,这里出现了多个文件

然后使用binwalk分解,binwalk分解不行,再利用foremost进行分解,这里使用foremost分解最终得到一张图片,图片还不在这里

根据题目给的提示“flag在另一张图里” ,使用tweakpng删除第一个IDAT,保存得到一个新图片(tweakpng是一个Windows工具,也可以通过wine在kali运行,可以尝试)

得到的新图片就有flag 

PNG的图像数据块(IDAT)存储图像的实际数据,可以包含多幅图像,所以一张图片可能有多个图像的数据组成,但默认显示第一个IDAT数据块图像。

misc12

前面步骤省略...

这里用binwalk分析是否存在内嵌文件,没有

接着使用tweakpng,能够看到很多个IDAT数据块

然后这里就有两个思路:

1. 将所有IDAT数据块合并查看,还可以再进一步使用binwalk和foremost进行分解图片查看是否能够得到有效的图片

2. 手动一个个IDAT数据块得到每一个图片是否是有效图片

先来合并IDAT数据块

分别使用binwalk和foremost工具生成的文件都没有想要的文件

 那一个个删除IDAT文件看看,删除了前面八个就能够得到flag了(记得每一个删完都要save!!!)

 misc13

按照前面题目的流程可以过一遍,没有得到想要的文件。

根据题目提示flag位置在图片末尾,说明应该还是藏在图片的内容中,使用grep查询包含'c'的片段,发现有一个很疑似flag的片段

这里的规律是隔位取值(其实单看ctfshow还是勉强能看得出来这个规律的),得到四个flag

ctfshow{ae6e3fa48f528b1742d72e6f41298380}

ctfshow{1e3e2ed48f518b7e4267de1c412a839a}

ctfshow{ae6e3ea48f518b7e42d7de6f412f839a}

ctfshow{ae6e46c48f739b7eb2d1de6e412f839a}

都试试哪一个是答案flag就好了

misc14

按照步骤,发现图片内嵌着多个文件

然后进行binwalk分解,出现报错,并且foremost提取出来的文件也不是想要的

这里报错的原因有可能是文件结构异常(可能被加密之类的情况)或者是签名数据库识别不出

可以利用dd手动提取隐藏文件

那么我们需要提取的是后面那个图片文件,偏移量为2103

得到的jpg文件就是flag

也可以使用-D命令

文件头是JPEG文件

msic15

这里就是根据上面的方法,在使用vim或者Windows文本编辑器查看文件内容时,能够在文件头看到flag

题目这里给了提示:flag跳过去了,这个'跳'字?

 BMP格式的文件头里有4位字节称作偏移量,用来指图像数据的起始位置。

题目就是利用增大这个偏移量的方法,把冗余数据塞在了BMP头部,之后的内容可以正常显示。
当使用cat的时候是不能显示出tfshow{...}这部分的,如果flag被塞在了文件头和信息头之后、图像数据之前,这段数据可能包含空字符(或者是非ASCII字符),当cat遇到空字符会提前终止输出而不会输出后面这段内容(遇到非ASCII会显示乱码,掩盖flag)

但是vim以及Windows的文本编辑器就不会,因为是强制显示所有字节的(包括空字符和非ASCII字符)

misc16

使用binwalk判断是否存在多个文件,显示存在,然后使用binwalk进行分解

 打开DD4文件就能看到flag

misc17

使用binwalk发现存在多个文件

使用binwalk分解出的文件也没有得到想要的 

使用forest工具分解也没有得到想要的

使用tweakpng一个个删除以及合并IDAT,也没有效果

题目提示是“答案藏在内容中”,查阅,这里需要用到zsteg工具

 zsteg是一个专门用于检测PNG和BMP图像中隐写数据的工具,支持LSB(最低有效位)、文件附加数据、异常调色板等常见隐写手法。kali工具下载就好gem install zsteg

 发现这里有隐藏的额外数据“extradata:0”,“3544 bytes of extra data after zlib stream ”表明 PNG 文件的 IDAT 数据块(存储图像压缩数据的部分)之后存在额外的隐藏数据

将额外的数据保存到一个文件

再次使用binwalk分解额外数据文件

得到的图片即是flag

附加文件需要完整的文件头+文件体才能被解压工具识别,直接使用binwalk提取时,如果数据未完整分离,zip工具会出现报错。

misc18

注意这里有一个不同寻常的提示“flag在标题、作者、照相机和镜头型号里”。

查看图片的属性

 

misc19

这里提示“flag在主机上的文档名里”,但在普通查看属性看不到信息,这里可以使用exiftool工具查看完整的Exif元数据

 当然也可以使用Exif官方网站查看信息https://exif.tuchong.com/

元数据是“描述数据的数据”,即文件的附加信息,用于记录文件的属性、来源、编辑历史等,但不会直接影响文件的主要内容。在CTF中,元数据常被用来隐藏Flag或者传递线索,因为它容易被忽视,但又支持自定义写入。 

misc20

这里提示“flag在评论里”,跟misc18一样使用exiftool查看文件附加信息,发现comment有flag

 翻译过来,flag为ctfshow{c9796b1aecf06e1d79c21ddad593e42}

 misc21

这里提示“flag在序号里”,跟上面一样使用exiftool查看文件的序号,发现一行数字

刚开始没有什么思路,查阅,这里需要16进制转换

1. 数字由0-9数字组成,并且位数为偶数,符合十六进制字节对的特征

2. CTF经常使用十六进制编码隐藏ASCI字符

转换出来的字符串是hex十六进制转换函数,将X和Y进行hex转换,那这里有分辨率和位置的X和Y

分别转换得到的flag为ctfshow{e8a221498d5c073b4084eb51b1a1686d}

misc22

开始注意到没点开之前的图片是有黄色字符的,但点开就看不到了。这里binwalk检测出有两个图片

使用binwalk和foremost工具都分解不出所要的,考虑使用手动分解

FFD8文件开始位置,FFD9文件结束位置

这边binwalk和foremost分解不出来的原因有可能是第一个文件的结束标记后面紧接了数据块,JPEG 文件允许 FF D9 出现在注释或数据段中(非实际结束),工具可能被误导,从而解析不出。

这里的第二个文件偏移量计算:0xA0十六进制为160,注意这是行的起始位置,要加上后面的14个字节,所以偏移量为174

这里文件分解出来就能够看到黄色部分


Windows也可以使用winhex,这是一个非常厉害且好用的工具

打开winhex搜索FFD8

将第二个FFD8之前的内容Ctrl选中删除生成一个新的文件

保存就可以看到黄色字体了。


另外,这里没有打开之前能看到黄色字体,但打开之后看不到,这种称作thumbnail隐写(缩略图隐写)

缩略图是一个小型的JPEG,有独立的文件头标记和文件结束标记

缩略图仅在文件预览时显示,打开不显示

对于这个隐写,可以直接使用exiftool工具进行提取

exiftool -ThumbnailImage -b  misc22.jpg > thumb.jpg

misc23

题目提示“flag在时间里”,exiftool工具查看

“history action”字段翻译为“时间戳,十进制转十六进制,得到flag”

首先先将时间转为时间戳https://tool.lu/timestamp/(注意格式)

然后将时间戳转换为16进制

最终得到的flag
ctfshow{3425649ea0e31938808c0de51b70ce6a}

misc41

题目提示:“H4ppy Apr1l F001's D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。”

根据提示,可以猜测解题关于“F001”这串字符有关,在图片内容搜索

高亮部分图案就是flag(虽然我没看出来、、、)

flag为ctfshow{fcbd427caf4a52f1147ab44346cd1cdd}

总结

内容比较多,先针对图片篇的基础操作和信息附加进行总结

文件伪装

这对应的是后缀名和文件格式不对应,诱导选手用错误工具打开

如何检测?

  • file flag.jpg 查看真实文件类型

文件附加数据

这对应的是图片末尾插入flag明文以及BMP文件头和内容中间插入flag明文

原理:

  • 能够直接插入图片明文是因为,图片解析过程中碰到不能解析的内容会直接跳过,不影响图片显示
  • 能够在BMP文件里面插入flag是因为,BMP文件的偏移量决定图像数据的起始位置,如果人为增大偏移量可以在文件头和图像数据之间插入额外数据

如何检测?

  • grep -a  -F 'ctf' misc17.png 查看明文字符串(未隐藏)

  • vim 查看文件所有内容(文本编辑器也可以)

文件拼接

这对应的是binwalk发现图片包含多个文件

如何检测?

  • 自动分离文件:使用binwalk和foremost深度扫描,foremost比binwalk厉害,binwalk这里也需要注意-e和-D命令的区别
  • 手动提取:使用dd命令或者WinHex工具进行手动提取,dd命令需要准确知道文件的偏移量,WinHex是可视化工具,相对操作比较简单,而且功能比较全面
  • 缩略图可以使用exiftool工具直接提取

元数据隐写

这对于的是将flag隐藏在文件的属性信息(如标题、作者等)中

如何检测?

  • 可以直接通过文件属性查看工具exiftool查看,或者使用Exif网页版
  • 缩略图用exiftool -ThumbnailImage提取

编码转换隐写

这里对应的是Flag经过某种编码或加密后存储,需按提示转换(如Hex→ASCII、时间戳→日期、Base64解码等)

如何检测?

  • 直接使用对应进制转换网页版

根据上面总结需学会系统解题。

接下来会进行misc入门的图片篇(文件结构)及(颜色通道)进行学习。

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

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

相关文章

Vulnhub 02 Breakout靶机

一、信息收集 我是在仅主机模式下扫描的。 以此去访问端口。 80端口是上面的主页,查看一下源代码,发现了如下图所示的注释,翻译过来是:别担心,没有人会来这里,安全地与你分享我的访问权限,它是…

论文阅读:2024 arxiv AutoDefense: Multi-Agent LLM Defense against Jailbreak Attacks

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 AutoDefense: Multi-Agent LLM Defense against Jailbreak Attacks https://arxiv.org/pdf/2403.04783#page9.14 https://www.doubao.com/chat/14064782214316034 文章目录…

Spring Boot 请求限流实战:基于 IP 的高效防刷策略

前言 互联网流量就像洪水猛兽,来得快去得也快。如果不给接口装个“限速阀”,服务器瞬间被刷爆,宕机成真,根本不稀奇。没有限流机制,系统就像没有刹车的赛车,跑得太快反而翻车。为了保证服务稳定、响应迅速,保护后端资源不被恶意请求掏空,限流成必备武器。 本篇文章将…

机器学习第二课之线性回归的实战技巧

1 线性回归简介 1 线性回归应用场景 线性回归是一种用于分析自变量与连续型因变量之间线性关系的模型,其核心是通过拟合线性方程(y w_1x_1 w_2x_2 ... w_nx_n b)来预测因变量或解释自变量的影响。由于其简单、可解释性强的特点,线性回归…

【时时三省】(C语言基础)指向指针数据的指针变量

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省在了解了指针数组的基础上,需要了解指向指针数据的指针变量,简称为指向指针的指针。怎样定义一个指向指针数据的指针变量呢?下面定义一个指向指针数据的指针变量&#…

前端css 的固定布局,流式布局,弹性布局,自适应布局,响应式布局

1. 固定布局容器的宽高是固定的,单位一般是px,不会随着屏幕大小变化2.流式布局(百分比布局/vw)vw: 视图宽度的百分比,1vw代表视窗宽度的1% vh: 视图高度的百分比,1vh代表视窗高度的1%特点: 宽度随屏幕大小变化单位用%或vw 高度通常…

python学习DAY26打卡

DAY 26 函数专题1:函数定义与参数 内容: 函数的定义 变量作用域:局部变量和全局变量 函数的参数类型:位置参数、默认参数、不定参数 传递参数的手段:关键词参数 传递参数的顺序:同时出现三种参数类型时…

echarts图表点击legend报错问题(折线图)

原因是&#xff1a;echats 实例&#xff0c;不能够用响应式变量去接收。<template><div class"attendance-chart"><div v-if"loading" class"loading">加载中...</div><div v-else-if"error" class"e…

Django模型开发:模型字段、元数据与继承全方位讲解

文章目录一、模型字段类型详解Django 与 MySQL 字段类型映射整数类型深度对比二、常用字段选项null 与 blank 的区别注释与帮助文本默认值设置日期时间特殊选项选项列表&#xff08;choices&#xff09;三、模型元数据与方法模型 Meta 类模型管理器&#xff08;Manager&#xf…

墨者:SQL注入实战-MySQL

1. 墨者学院&#xff1a;SQL注入实战-MySQL&#x1f680; 2. 实训重点目标✨ 目标一&#xff1a; 了解sqlmap的使用及其tamper插件的使用&#xff1b; 目标二&#xff1a; 了解base64编码及解码。 3. 解题方向&#x1f50d; 目标网站的id参数通过Base64编码传输&#xff0c;…

Milvus 实战全流程

&#x1f4da; 学习路径总览1. Milvus 基础知识什么是向量数据库&#xff1f;Milvus 的核心概念&#xff08;collection、field、index、partition、segment&#xff09;Milvus 和 Faiss、Annoy、HNSW 的区别2. 安装与部署Docker 快速部署 Milvus&#xff08;推荐&#xff09;本…

Mysql数据库基础(入门)

目录 一.认识Sql 1.什么是Sql 2.Sql的作用 3.Sql通用语法 4.Sql分类 二.数据库的操作&#xff08;DDL&#xff09; 1.创建数据库 2.显示/使用数据库 3.修改数据库 4.删除数据库 三.常用数据类型 1.数值类型 2.字符串类型 3.日期类型 4.详细的数据类型 四.表的操…

MySQL 锁机制 15 连问 · 面试速答版

一、脑图&#xff1a;锁全景&#xff08;先记结构&#xff0c;再填细节&#xff09; 锁层级 ├─ 表锁 │ ├─ 意向锁 IS / IX │ └─ 表锁 READ / WRITE └─ 行锁├─ 记录锁 Record├─ 间隙锁 Gap└─ 临键锁 Next-Key二、15 问 15 答&#xff08;面试官一问一…

【Linux】发展历程

很高兴为您详细介绍Linux操作系统的详细发展历程。Linux是一个自由和开放源代码的操作系统内核&#xff0c;由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于1991年首次发布。以下是Linux操作系统的主要发展里程碑&#xff1a;1. Linux 0.01 (1991)发布日期&#xff1a…

LNMP架构+wordpress实现动静分离

WordPress简称WP&#xff0c;最初是一款博客系统&#xff0c;后逐步演化成一款免费的CMS&#xff08;内容管理系统/建站系统&#xff09;。 WordPress网站的适用场景&#xff1a; 博客 企业官网 作品集网站 电商平台 线上教育系统 论坛和社群网站 甚至会员系统、订阅内容…

智慧灯杆:不止于照明,塔能科技的城市感知网络野心

当夜幕悄然降临&#xff0c;城市里的路灯便依次亮了起来&#xff0c;它们可不单单照亮了行人前行的路以及车辆行驶的道路&#xff0c;实际上还在悄无声息地经历着一场变革。现如今的路灯&#xff0c;早已不再仅仅充当单纯的照明工具这么一个角色了&#xff0c;而是逐渐转变成了…

【Linux内核模块】调试技巧

内核模块开发最让人头疼的不是写代码&#xff0c;而是调试 —— 代码编译通过了&#xff0c;加载后却要么没反应&#xff0c;要么直接让系统崩溃。这就像在黑屋子里修机器&#xff0c;看不见摸不着。其实内核调试有一套成熟的工具箱&#xff0c;掌握这些工具和技巧&#xff0c;…

RK3568笔记九十一:QT环境搭建

若该文为原创文章,转载请注明原文出处。 记录按照正点原子给的手册搭建QT环境 参考《09【正点原子】ATK-DLRK3568_Qt开发环境搭建V1.2.pdf》 一、安装 1、下载 https://mirrors.sau.edu.cn/qt/archive/online_installers/4.6/qt-unified-linux-x64-4.6.0-online.run 2、赋…

面试实战,问题十六,Java面试,消息队列,如何避免消息重复消费,怎么回答

在Java面试中&#xff0c;关于消息队列如何防止消息被重复消费的问题&#xff0c;可以从以下几个方面进行回答&#xff0c;结合系统架构设计、消息队列机制和业务逻辑处理&#xff0c;确保在不同场景下实现消息的幂等性。 1. 消息队列重复消费的根本原因 消息重复消费的根本原因…

PDF转图片实用指南:如何批量高效转换?

将PDF转换为图片后&#xff0c;可以更方便地在演示文稿、网页或电子相册中使用这些资料&#xff0c;以便更好地展示信息。它 是一款支持多文件批量转换的工具&#xff0c;可将多个 PDF 文档一键转换为图片格式。虽然界面为英文&#xff0c;但操作简单&#xff0c;不影响使用。你…