网络安全进阶学习第二十课——CTF之文件操作与隐写

news2024/11/25 15:44:11

文章目录

  • 一、文件类型识别
    • 1、File命令
    • 2、Winhex
    • 3、文件头残缺/错误
  • 二、文件分离操作
    • 1、Binwalk工具
    • 2、Foremost
    • 3、dd
    • 4、Winhex
  • 三、文件合并操作
    • 1、Linux下的文件合并
    • 2、Windowsa下的文件合并
  • 四、文件内容隐写
    • Winhex
  • 五、图片文件隐写
    • 1、图片混合
    • 2、LSB(最低有效位 Least Significant Bit)
      • 隐写步骤
      • 工具查找隐藏信息方法
    • 3、隐写进图片属性中(查看图片属性)
    • 4、隐写图片大小(图片大小修改)
    • 5、GIF动图信息隐藏
  • 六、压缩文件分析
    • 1、伪加密
    • 2、暴力破解
  • 七、流量包文件分析
    • Wireshark 过滤器


一、文件类型识别

1、File命令

------ 当文件没有文件扩展名,或者具有文件扩展名但无法正常打开时,可以根据识别到的文件类型进行修改文件扩展名,从而使文件能够正常打开。

使用场景:不知道后缀名,无法打开文件。
格式: file myheart
在这里插入图片描述
这里就识别到是一个PCAP的流量包

2、Winhex

------ 通过WinHex程序可以查看文件的文件头类型,并根据文件头类型来判断文件的类型。

使用场景:windows下通过文件头信息判断文件类型。
在这里插入图片描述

3、文件头残缺/错误

------ 一般情况下,文件无法正常打开通常有两种原因:文件头部残缺和文件头部字段错误。

------ 对于文件头部残缺的情况,可以使用 WinHex 程序来添加相应的文件头信息。而对于头部字段错误的情况,可以尝试找到一个同类型的文件,将其作为替换文件来恢复文件的正常打开。

使用场景:文件头部残缺或文件头部字段错误无法打开正常文件
格式:file 文件名
在这里插入图片描述


二、文件分离操作

------ 如果不确定文件是否多个文件组合,可以使用WinHex之类的工具查看,查看里面是否有PK等关键字样,以及其他疑似的文件名。如下图:
在这里插入图片描述

1、Binwalk工具

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

------ Binwalk有个特点就是分离出压缩包会自动给我们解压,加入压缩包有密码就会解压出一个空文档。

  • 普通用户登录命令:
    分析文件:binwalk filename
    分离文件:binwalk -e filename
    在这里插入图片描述

  • Root权限用户登录使用命令:
    分析文件:binwalk filename --run-as=root
    分离文件:binwalk -e filename --run-as=root
    因为在Linux系统中,直接使用root权限用户登录会认为是很危险的行为。

2、Foremost

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

  • 用法:
    foremost 文件名 –o 输出目录名
    在这里插入图片描述

3、dd

------ 当无法使用自动工具正确分离文件时,可以借助 dd 命令手动实现文件分离。
------ Binwalk和Foremost分离只能分离按照顺序块来隐藏的文件,无法分离文件块打乱的文件。

  • 举例:
    ------ 一个文件里面藏有两个文件,分别是文件1和文件2,每个分件都被分为2块,分别是文件1a和文件1b、文件2a和文件2b。
    ------ 假如文件块的排放顺序是:文件1a、文件1b、文件2a、文件2b,这种使用Binwalk和Foremost是可以分离的。但假设排放顺序是:文件1a、文件2a、文件1b、文件2b,这种打乱的状态下的,Binwalk和Foremost是无法分离的,这时候就可以使用dd来分离。

  • 格式:
    dd if=源文件 of=目标文件名 bs=每块多少字节 count=多少块 skip=跳过缩少块

    • 参数说明:
      if=file #输入文件名,缺省为标准输入。
      of=file #输出文件名,缺省为标准输出
      bs=bytes #同时设置每块读取的大小,可代替ibs和obs。
      count #总共要读取块数目
      skip=blocks #从输入文件开头跳过多少个块后再开始复制。
  • 用法展示:
    这里我新建一个文件为123,内容如下:
    在这里插入图片描述
    输入命令:dd if=123 of=aa bs=5 count=1
    在这里插入图片描述
    这时当前目录下就多了一个aa文件,打开文件查看
    在这里插入图片描述

4、Winhex

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

使用场景:windows下利用winhex程序对文件进行手动分离。
------ 分离方法就是把需要的部分选中然后复制下来,再新建另一个文件,把复制下来的部分粘贴过去。
在这里插入图片描述


三、文件合并操作

1、Linux下的文件合并

使用场景: linux下,通常对文件名相似的文件要进行批量合并
格式:cat 合并的文件>输出的文件
在这里插入图片描述

------ 完整性检测:linux下计算文件md5:
md5sum 文件名
在这里插入图片描述

2、Windowsa下的文件合并

使用场景: windows下,通常要对文件名相似的文件进行批量合并
格式:copy /B 合并的文件 输出的文件命令
在这里插入图片描述
------ 完整性检测: Windows下计算文件md5:
certutil -hashfile 文件名 md5
在这里插入图片描述


四、文件内容隐写

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

使用场景:windows下,搜索隐写的文件内容

Winhex

------ 通常将要识别的文件拖入winhex中,查找具有关键字或明显与文件内容不和谐的部分通常优先观察文件首部和尾部,搜索flag或key等关键字,最后拖动滚轮寻找。
在这里插入图片描述


五、图片文件隐写

1、图片混合

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

推荐的工具: Stegsolve.jar(可调节图片颜色像素)
原来的图片:
在这里插入图片描述

调节后的图片:
在这里插入图片描述

2、LSB(最低有效位 Least Significant Bit)

------ 通过修改图片灰度、闽值、曝光度、颜色曲线等方式找到人眼识别不到的信息。

推荐的工具: Stegsolve.jar

隐写步骤

  1. 假设我要在一张图片里面隐藏一个字符f,首先把f转换成ASCII码,再转换为二进制
    f:102 对应二进制:01100110

  2. 在图片中选取8位连续的16进制,再把这8位转换位二进制
    在这里插入图片描述

  3. 把转换后的二进制数的最后一位按照上面f的二进制值:01100110来进行一一替换,最后就把替换后的二进制值转换位16进制,用来替换原图片中选出来的8位16进制。
    在这里插入图片描述

工具查找隐藏信息方法

使用的图片是:
在这里插入图片描述

  1. 用 Stegsolve.jar 打开图片,发现 red0,green0,blue0 这三个通道的图片上方有异样:
    在这里插入图片描述

  2. 打开文件>>Analyse>>Data Extract
    在这里插入图片描述

  3. 将Red、Green、Blue三个位置的 0 通道勾选并导出保存为 png 格式的文件:
    在这里插入图片描述

  4. 获得 flag.png 图片,发现是个二维码
    在这里插入图片描述

3、隐写进图片属性中(查看图片属性)

在这里插入图片描述

4、隐写图片大小(图片大小修改)

------ 一般图片都是正常大小可进行查看,但是也会遇到图片损坏或者其他事件。然而图片大小如果存在问题,我们一样是可以对图片进行一个访问的,但是我们只能看到图片的一部分,使用这种方式对图片的其他部分进行一个隐藏。

  • 例:下图就是对图片大小进行了修改 导致我们不能看完整的图片信息
    在这里插入图片描述
  1. 使用WinHex修改图片大小
    ------ 这时候可以使用WinHex来修改图片大小,一般第18、19位是宽,第22、23位是高
    在这里插入图片描述

  2. 在图片属性查看大小,再转换位16进制
    ------ 假如不知道是哪几位是图片大小,可以直接再图片属性中查看大小,再把数值转换位16进制,最后再在WinHex中查找。
    在这里插入图片描述
    在这里插入图片描述

  3. WinHex修改图片属性后就能正常查看
    在这里插入图片描述

5、GIF动图信息隐藏

使用工具:Stegsolve.jar
使用工具Stegsolve.jar逐帧逐帧地去看,具体操作步骤:
在这里插入图片描述
在这里插入图片描述


六、压缩文件分析

1、伪加密

------ 如果压缩文件是加密的,或文件头正常但解压缩错误,首先尝试文件是否为伪加密。zip文件是否加密是通过标识符来显示的,在每个文件的文件目录字段有一位专门标识了文件是否加密,将其设置为00表示该文件未加密,如果成功解压则表示文件为伪加密,如果解压出错说明文件为真加密。
使用场景:伪加密文件

  • 操作方法:
  1. 使用winhex打开文件搜索16进制50 4B 01 02,可以看到每个加密文件的文件头字段。
    在这里插入图片描述

  2. 从50开始计算,第九、第十个字符为加密字段,将其设置为0000即可变成无加密状态。
    在这里插入图片描述

2、暴力破解

------ 通常我们可以使用ARCHPR.exe工具来破解rar文件
使用场景:windows下加密过的rar文件

  1. 攻击类型选择暴力破解,在范围位置根据提示选择暴力破解范围选项设置暴力破解包含的类型开始于和结束于选项具体范围,如果没有定义则全范围暴力破解。点击打开选择要破解的文件,点击开始进行破解。建议使用1~9位的数字密码,以及系统自带的英文字典作为密码字典。

  2. 攻击类型选择掩码可以进行复杂的暴力破解,比如知道密码前3位是abc,后3位为数字,则在攻击类型选择掩码,在掩码处输入acb???,暴力范围选项选择所有数字,打开要破解的点击,点击破解。此时???的部分会被我们选择的暴力破解范围中的字符代替。
    在这里插入图片描述


七、流量包文件分析

Wireshark 过滤器

------ 利用wireshark本身的强大的报文过滤器,帮助我们筛选出想要的报文。

  • 常用的过滤命令:
1)过滤IP,如源IP或者目标 x.x.x.x
ip.src eq x.x.x.x or ip.dst eg x.x.x.x  或者  ip.addr eq x.x.x.x

2)过滤端口
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80  只显tcp协议的目标端口为80
tcp.srcport == 80  只显tcp协议的源端口为80
tcp.port >= 1 and tcp.port <= 80

3)过滤协议
tcp/udp/arp/icmp/http/ftp/dns/ip.....

4)过滤MAC
eth.dst  ==  A0:00:00:04:c5:84  过滤目标mac

5)包长度过滤
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包长度,从eth开始到最后

6)http模式过滤
http.request .method ==GET”
http.request .method ==POST”
http.request.uri  ==/img/logo-edu.gif”
http contains “GET”
http contains “HTTP/1.”
http.request.method ==GET&& http contain “User-Agent:”
http contains “flag”
http contains “key”
tcp contains “flag”

------ 比赛中,可以在流量包中寻找flag
------ 除了下图外,也可以直接在追踪流中直接查找
在这里插入图片描述


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

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

相关文章

slickEdit 2022 (v27.0.2)Ubuntu安装以及破解

1去官网下载安装包 SlickEdit 也可以从我这里下载源码包 https://download.csdn.net/download/m0_38012470/88343180 2.解压压缩包并进入根目录 3.sudo ./vsinst 4按住回车不松手一直到显示需要你输入yes的时候 5.一路通过需要输入Y的时候就输入 6.一直到弹出对话框关闭…

c++11的一些新特性

c11 1. {}初始化2. 范围for循环3. final与override4. 右值引用4.1 左值引用和右值引用4.2 左值引用与右值引用比较 5. lambda表达式6. 声明6.1 auto6.2 decltype6.3 nullptr 7. 可变参数模版 1. {}初始化 在C中&#xff0c;使用花括号初始化的方式被称为列表初始化。列表初始化…

Windows C++ 环境下 eigen、osqp、osqp-eigen安装教程

本文是Windows环境下安装eigen、osqp、osqp-eigen的一个简单教程。 osqp是用于二次规划的一种求解器&#xff0c;提供包括C、Matlab、Python等在内的接口&#xff0c;但是不包含C接口。为了能在C 中使用osqp&#xff0c;可以使用osqp-eigen接口进行调用。 第一步&#xff1a;…

第二章 进程与线程 七、处理机调度(概念、层次)

目录 一、基本概念 二、三个层次 1、高级调度&#xff08;作业调度&#xff09; 2、低级调度&#xff08;进程调度/处理机调度&#xff09; 3、中级调度&#xff08;内存调度&#xff09; 三、三次调度的联系、对比 四、七状态模型 五、总结 一、基本概念 当有一堆任务…

利用群论来研究魔方

文章灵感来源于&#xff1a; 魔方与群论&#xff08;二&#xff09;&#xff08;交换子牛啤&#xff01;&#xff09; - 知乎并参考了&#xff1a;https://www.gap-system.org/Doc/Examples/rubik.html使用了这里的小程序&#xff1a;Cubie 先汇制一张&#xff0c;魔方图 ----…

MySQL数据库upsert使用

本文翻译自&#xff1a;MySQL UPSERT - javatpoint&#xff0c;并附带自己的一些理解和使用经验. MySQL UPSERT UPSERT是数据库管理系统管理数据库的基本功能之一&#xff0c;它允许数据库操作语言在表中插入一条新的数据或更新已有的数据。UPSERT是一个原子操作&#xff0c;…

手刻 Deep Learning -第壹章-PyTorch入门教学-基础概念与再探线性回归

一、前言 本章会需要 微分、线性回归与矩阵的基本观念 这次我们要来做 PyTorch 的简单教学&#xff0c;我们先从简单的计算与自动导数&#xff08; auto grad / 微分 &#xff09;开始&#xff0c;使用优化器与误差计算&#xff0c;然后使用 PyTorch 做线性回归&#xff0c;还有…

office mac苹果办公软件安装包安装教程详解

软件下载 软件&#xff1a;mac office版本&#xff1a;2021语言&#xff1a;简体中文大小&#xff1a;4.27G安装环境&#xff1a;mac硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道 百度网盘 https://pan.baidu.com/s/1WGSB-icELUxweFkI8iIbzA 首先&#…

恒源云GPU使用tensorboard || 以OpenMMLab系列为例 || 定时复制可视化日志

序言 在训练过程中使用可视化工具向来是很有效的。相比于shell中的输出&#xff0c;可视化能够更好地向我们展现在训练过程中各项指标的变化。 但是&#xff0c;由于深度学习所需要的设备性能要求较高&#xff0c;我们常常使用云GPU进行训练。但是一些云平台的可视化工具让人摸…

2023国赛B题:多波束测线问题 评阅要点完整分析

本文所有分析仅代表个人观点&#xff0c;不代表官方&#xff0c;仅供参考 制作人&#xff1a;川川徒弟 demoo CSDN&#xff1a;川川菜鸟公众号&#xff1a;川川带你学AI 全文采用非编程做法  需要工具&#xff1a; geogebra、matlab工具箱   注&#xff1a; 本文全文不考虑…

02 java ---- Android 基础app开发

目录 相对布局 显示一个美女 显示两个美女 安卓APP启动过程 安卓布局控件 常用布局之相对布局 常用布局之相对布局 padding和margin 按键美化 常用布局之线性布局 安卓按键响应的几种方式 直接设置按键的onClick绑定的函数 自定义类实现按键监听事件的接口 匿名内…

字节一面:说说var、let、const之间的区别

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;作为一名前端开发工程师&#xff0c;熟练掌握js是我们的必备技能&#xff0c;var、let、const之间的区别我们也得熟练掌握&#xff0c;博主在这给大家细细道来。 &#x1f…

Linux驱动中断与时间篇——高精度定时器hrtimer

文章目录 前言相关接口使用示例单次定时循环定时 前言 低分辨率定时器是用jiffies来定时的&#xff0c;所以会受到HZ影响&#xff0c;如果HZ为200&#xff0c;代表每秒种产生200次中断&#xff0c;那一个jiffies就需要5毫秒&#xff0c;所以精度为5毫秒。 如果精度需要达到纳秒…

如何实现一个简单的Promise/A+规范的Promise库?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Promise/A规范的Promise⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚…

uni-app:通过ECharts实现数据可视化-如何引入项目

效果 引入文件位置 代码 <template><view id"myChart"></view> </template> <script> import echarts from /static/js/echarts.js // 引入文件 export default {mounted() {// 初始化EChartsconst myChart echarts.init(document…

【JVM 内存结构丨堆】

堆 定义内存分配特点:分代结构对象分配过程Full GC /Major GC 触发条件引用方式堆参数堆内存实例 主页传送门&#xff1a;&#x1f4c0; 传送 定义 JVM&#xff08;Java Virtual Machine&#xff09;堆是Java应用程序运行时内存管理的重要组成部分之一。堆内存用于存储Java对象…

如何区分和选择EML、DML两种激光器

EML&#xff08;External Cavity Laser&#xff09;和DML&#xff08;Distributed Feedback Laser&#xff09;两种激光器在光模块中都扮演着重要的角色&#xff0c;用于光通信和其他光电子应用。本文跟随易天光通信来了解一下它们在光模块中的应用吧&#xff01; 一、什么是E…

excel中的引用与查找函数篇3

1、INDEX(array,row_num,[col_num])&#xff1a;获取指定范围中指定行号和列号对应的数据 index(查询范围,行号,列号) 行号和列号是相对选中查询范围来写的&#xff1a;分别把第二行第三列的数据和第四行第二列的数据查找出来。 数据是单行或单列&#xff0c;后面只需要给一个参…

C【文件操作】

1. 什么是文件 磁盘上的文件是文件。 但是在程序设计中&#xff0c;我们一般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09;。 1.1 程序文件 包括源程序文件&#xff08;后缀为.c&#xff09;,目标文件&#xff08;windows环…

Golang Array 数组使用注意事项和细节

在go数组当中&#xff0c;长度是数据类型的一部分 [3]int *[3]int 数组使用注意事项和细节 1) 数组是多个相同类型数据的组合&#xff0c;一个数组一旦声明/定义了&#xff0c;其长度是固定的&#xff0c;不能动态变化 var a [3]int a[0] 1.1 这样是不行的&#xff0c;必…