ctf中的misc介绍(上)

目录

一、misc的介绍

二、使用到的工具

1、010editor

2、Binwalk(kali自带)

3、Notepad++

4、Stegsolve

5、audacity

三、相关题型

文件/图片操作与隐写

文件类型的识别

1.使用linux中的file命令查看文件属性

2.使用010editer或者Winhex查看文件的文件头

3.既然会出现没有后缀的文件,那当然也会出现缺少头部的情况,可以根据后缀名来选择文件头部进行填充,如果没有后缀名,则查看文件尾部来判断文件类型。

文件分离操作

1.binwalk(binwalk工具在遇到压缩包时,会自动解压。)

2.formost

3.dd命令(相当难用,操作复杂,适用于解决难题):

4.winhex(手动分离)  

文件合并操作

1.Linux系统中合并文件: 

2.Windows下的文件合并:

文件内容的隐写

例题(BUUCTF的你竟然赶我走):

图片隐写

常见的图片隐写:细微的颜色差别、GIF图多帧隐藏(图片通道隐藏、不同帧图信息隐藏、不同帧对比隐写)、Exif信息隐藏、图片修复(图片头修复、图片尾修复、CRC校验修复、长宽高修复)、最低有效位LSB隐写、图片加密(Stegdetect、Outguess、Jphide、F5)

图片混合

例题:

1.隐藏在动图之中(BUUCTF中的金三胖)

2.隐写图片的大小(BUUCTF中的大白)

3.隐写在图片的属性中(BUUCTF中文件中的秘密)

压缩包的分析

解题方式:

暴力破解加密密码(ARCHPR4.54):

例题(BUUCTF中的rar):


一、misc的介绍

MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、压缩包解密、流量分析取证、与信息安全相关的大数据等

二、使用到的工具

1、010editor

查看文件类型

2、Binwalk(kali自带)

合并文件

3、Notepad++

进行字符串处理

4、Stegsolve

图片隐写处理

5、audacity

音频隐写处理

三、相关题型

文件/图片操作与隐写

文件类型的识别

杂项题目主要是以文件附件作为题目,但是给的文件不一定是有后缀名的,这就需要我们识别这些文件

1.使用linux中的file命令查看文件属性

使用方法:
将文件复制到kail或者带有file工具的系统中,使用file查看文件。

将文件后缀名补上即可正常打开。
然后根据实际情况进行初步判断可能是什么类型的题目。

2.使用010editer或者Winhex查看文件的文件头

常见的文件头:

3.既然会出现没有后缀的文件,那当然也会出现缺少头部的情况,可以根据后缀名来选择文件头部进行填充,如果没有后缀名,则查看文件尾部来判断文件类型。

以下是常见的文件尾部:

(1)zip文件的结尾以一串504B0506开始。

(2)rar文件以C43D7B00400700结尾。

(3)JPG文件结尾为FFD9

(4)PNG文件结尾为000049454E44AE426082。

(5)Gif文件结尾为3B。

文件分离操作

1.binwalk(binwalk工具在遇到压缩包时,会自动解压。)

Binwalk是一个在Linux下用于分析和分离文件的工具,它能够快速判断文件是否由多个文件合并而成,并将其进行分离。如果分离成功,会在目标文件所在的目录下生成一个名为"文件名_extracted"的文件夹,里面存放着分离后的文件。

相关命令:分析文件:binwalk filename分离文件:binwalk -e filenamebinwalk -e .... --run-as=root

分析文件: 

分离文件,会生成一个新的文件夹:

2.formost

如果binwalk无法正确分离出文件,可以使用foremost,将目标文件复制到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件。

该命令有的kali没有自带,可能需要额外下载:

sudo apt install foremost

命令:
foremost 文件名 -o 输出文件名

3.dd命令(相当难用,操作复杂,适用于解决难题):

当无法使用自动工具正确分离文件时,可以借助 dd 命令手动实现文件分离。

使用的格式:

dd if=源文件 of=目标文件名 bs=1 skip=开始分离的字节数
参数说明:
if=file        /*输入文件名,缺省为标准输入*/
of=file        /*输出文件名,缺省为标准输出*/
bs=bytes       /*同时设置读写块的大小为bytes,可以代替ibs和obs*/
skip=blocks    /*从输入文件开头跳过blocks个块后再开始复制*/

4.winhex(手动分离)  

除了使用 dd 命令之外,还可以通过使用 WinHex 工具来手动分离文件。只需将目标文件拖放到 WinHex 中,然后定位到需要分离的部分,最后进行复制即可完成操作。

文件合并操作

1.Linux系统中合并文件: 

命令:cat 需要合并的文件 > 输出的文件名

完整性检测:Linux下计算文件md5:md5sum 文件名

2.Windows下的文件合并:

使用场景:windows下,通常要对文件名相似的文件进行批量合并,格式为:

copy /B 合并的文件(文件1+文件2+...+文件n) 输出的文件命令

完整性检测:windows下计算md5,格式为:

certutil -hashfile 文件名 md5

文件内容的隐写

文件内容隐写,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键字KEY或者flag来查找隐藏内容。

在Windows系统中,通常将要识别的文件使用winhex打开,查找具有关键字或明显与文件内容不和谐的部分---通常优先观察文件首部和尾部,再搜索flag或key等关键字。

 

例题(BUUCTF的你竟然赶我走):

图片隐写

 

常见的图片隐写:细微的颜色差别、GIF图多帧隐藏(图片通道隐藏、不同帧图信息隐藏、不同帧对比隐写)、Exif信息隐藏、图片修复(图片头修复、图片尾修复、CRC校验修复、长宽高修复)、最低有效位LSB隐写、图片加密(Stegdetect、Outguess、Jphide、F5)
图片混合

图片混合也就是把两张图片重叠在一起,由于颜色的重叠或者其他一些因素,我们只能看到其中的一张图片,达到的这种效果就相当于隐藏了另一张图片。

这时我们就需要借助工具来对混合后的图片进行分离:Stepsolve.jar

例题:
1.隐藏在动图之中(BUUCTF中的金三胖)

下载完附件后打开发现是一个GIF动图,并且在播放过程中有红色字符闪过,怀疑信息被隐藏在动图的某些帧里,使用stegsolve.jar打开该动图(java -jar Stegsolve.jar)并使用analyse----frame browser来逐帧查看:

2.隐写图片的大小(BUUCTF中的大白)

先查看图片宽高

放入010editer,修改宽高,重新打开照片,得到flag

3.隐写在图片的属性中(BUUCTF中文件中的秘密)

flag在图片的属性里

压缩包的分析

一个zip的组成有三部分:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

可参考:CTF-MISC总结_ctfmisc-CSDN博客

1.无加密

数据区 的全局加密应当为 00 00

目录区 的全局方式位标记应当为 00 00

2.假加密(伪加密)

数据区 的全局加密应当为 00 00

目录区 的全局方式位标记应当为 09 00

3.真加密

数据区 的全局加密应当为 09 00

目录区 的全局方式位标记应当为 09 00

4.压缩源文件数据区  50 4B 03 04开头

+压缩源文件目录区 50 4B 01 02开头

+压缩源文件目录结束标志50 4B 05 06开头

识别一个zip文件是否加密主要是看压缩源文件 (数据区) 的全局方式位标记和压缩源文件 (目录区) 的全局方式位标记,关键操作在其中的全局方式标记的第一字节数字的奇偶上,其它的不管为何值,都不影响它的加密属性。第一字节数字为偶数表示无加密,例如:00,02,04等;为奇数表示有加密,例如01,03,09等。

解题方式:

真加密:把这个zip文件拖入winhex中,把09 00修改为00 00保存后即可得到flag

伪加密:把全方位标记区 的 01 00 或 09 00 改为 00 00

暴力破解加密密码(ARCHPR4.54):

如果设置了加密密码,可以尝试借助工具进行暴力破解

需要注意的是攻击类型中的“掩码”,攻击类型选择掩码时可以进行复杂的暴力破解,比如知道密码前3位是abc,后3位为数字,则在攻击类型选择掩码,在掩码处输入acb???,暴力范围选项选择所有数字,打开要破解的文件,点击破解。此时???的部分会被我们选择的暴力破解范围中的字符代替。 

例题(BUUCTF中的rar):

使用暴力破解工具

口令就是压缩包的密码

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

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

相关文章

OpenHarmony 实战开发——智能指针管理动态分配内存对象

概述 智能指针是行为类似指针的类,在模拟指针功能的同时提供增强特性,如针对具有动态分配内存对象的自动内存管理等。 自动内存管理主要是指对超出生命周期的对象正确并自动地释放其内存空间,以避免出现内存泄漏等相关内存问题。智能指针对…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github:地址

深度学习之基于Tensorflow卷积神经网络公共区域行人人流密度可视化系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在公共区域,如商场、火车站、地铁站等,人流密度的监控和管理对于确保公共安全…

谷粒商城实战(020 RabbitMQ-消息确认)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强 总时长 104:45:00 共408P 此文章包含第258p-第p261的内容 消息确认 生产者 publishers 消费者 consumers 设置配置类 调用api 控制台 抵达brocker 代理 新版本ReturnCallbac…

期权交割对股市是好是坏?2024期权交割日一览表

期权交割是指期权买方在期权合约到期日或之前行使期权,卖方履行义务,按照约定的价格和数量与期权卖方进行标的物的买卖或现金结算的过程。 交割方式 期权交割可以分为实物交割和现金交割,具体取决于合约规定。 实物交割 实物交割是指期权买…

搭建大型分布式服务(三十七)SpringBoot 整合多个kafka数据源-取消限定符

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

【CTF Reverse】XCTF GFSJ0490 simple-unpack Writeup(UPX壳+脱壳+反汇编)

simple-unpack 菜鸡拿到了一个被加壳的二进制文件 解法 拉进 exeinfope。 检测到是 UPX 打包的 ELF 文件。 NOT Win EXE - .o - ELF [ 64bit obj. Exe file - CPU : AMD x86-64 - OS/ABI: Linux/GNU ]Detected UPX! packer - http://upx.github.io -> try unpack with &…

VS2022 .Net6.0 无法打开窗体设计器

拿Vs2022 建了个Demo&#xff0c;运行环境是net6.0-windows&#xff0c;无论双击或是右键都打不开窗体设计器 打开项目目录下的*.csproj.user <?xml version"1.0" encoding"utf-8"?> <Project ToolsVersion"Current" xmlns"htt…

Github 2024-05-01 开源项目月报Top20

根据Github Trendings的统计,本月(2024-05-01统计)共有20个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目13TypeScript项目5C项目2非开发语言项目1C++项目1JavaScript项目1Rust项目1Go项目1Shell项目1Svelte项目1编程面试大学:成为软件工程…

JENKINS 安装,学习运维从这里开始

Download and deployJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarehttps://www.jenkins.io/download/首先点击上面。下载Jenkins 为了学习&#xff0c;从windows开始&#x…

java技术栈快速复习04_javaweb基础总结

javaweb概述 JDBC JDBC&#xff08;Java DataBase Connectivity&#xff0c;Java数据库连接&#xff09;是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系数据库提供统一访问。简单说就是用Java语言来操作数据库。 jdbc原理 早期SUN公司的天才们想编写一套可以连接…

【初识Redis】

初识Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据库&#xff0c;它提供了一个高性能的键值存储系统&#xff0c;并且支持多种数据结构&#xff0c;包括字符串、哈希、列表、集合和有序集合等。Redis的特点包括&#xff1a; 内存存储&…