首页 > 其他分享 >从0开始学杂项 第二期:隐写分析(1) 直接附加

从0开始学杂项 第二期:隐写分析(1) 直接附加

时间:2023-01-19 15:57:48浏览次数:55  
标签:文件 第二期 隐写 附加 我们 信息 文件类型 杂项

Misc 学习(二) - 隐写分析:直接附加

在上一期,我主要谈了谈对于杂项的一些浅薄理解,这一期我们正式开始对于CTF杂项的学习,我们首先学习的是杂项中最常考察的一项——隐写分析

这篇文章的大部分来自于我为了科学之光冬令营20号下午的讲课所准备的大纲。

一. 什么是隐写分析

有些时候,我们想把一些信息或者文件隐藏在某些文件之中,就可以利用隐写术来达到我们的目的。而针对那些有隐藏信息的文件,我们从中获取到被隐藏的信息的过程就叫做隐写分析

隐写分析是 Misc 中最为重要的项目之一,包括文件分析、信息隐写等等,涉及巧妙的编码、隐藏数据、层层嵌套的文件中的文件等等于杂项一样,它也喜欢考察一些并非为我们所掌握的小知识,比如一些从来没听说过的乱七八糟的密码(比如与佛论禅加密、颜文字加密等等),我们需要善用自己的信息搜集能力(其实就是查百度),在这里顺便简单介绍一下信息搜集

信息搜集

我的理解是,信息搜集就是针对某一目标,在搜集它/他/她的明显信息后,通过进一步的信息整合与分析得到他的隐蔽信息。

(此处省略500字)

“知己知彼,百战百胜。”我们学习信息搜集只是为了更好地防止自己的信息被搜集,提高自身信息安全意识,自觉保护个人信息,防止自己的隐私被窥探。

但其实,我们做隐写分析也用不到什么高深的技术,在这里我推荐使用 Bing(国内查不到还能顺手查查国外的)。当碰到自己的知识盲区时,我们需要准确地找出自己想问的问题,比如[BUUCTF]荷兰宽带数据泄露,下载后我们得到了一个 conf.bin 文件,我觉得可能大部分人都不清楚这是个什么玩意,编辑器打开一看还是堆乱码,这个时候我们就需要使用搜索引擎了。

我们首先要明确自己的问题: conf.bin 文件是什么,输入搜索框,回车,很快便能得知这是路由器的备份配置文件,要用 RouterPassView.exe 打开查看。

其它的问题大抵也是如此,只要我们准确把握问题主干,搜索引擎大多数时候都会给我们想要的结果。

二. 直接附加

本节我们需要的工具:一个十六进制编辑器(010 Editer 或者 WinHex 等等),最好有个 Kali Linux 虚拟机

我们都知道,文件的扩展名往往反映了文件的类型,但又不一定准确,因为我们可以随意地去修改它。比如我们把可以一个 jpg 图片文件改名成 xxx.png,无论我们学过学过计算机知识都应该知道 JPG 和 PNG 不是同一个东西,但是我们双击却依然可以用图片查看器查看这张图片,这说明程序有自己的方式去判断这是什么类型的文件,从而选择读取这张图片内容的方式,这就是文件头的作用。

大部分文件类型有其固定的文件结构,基本结构为:
文件头 + 文件内容(+ 文件尾) //文件尾可能有可能没有

图片查看器打开图片文件时,首先会根据文件头判断它是哪种类型的文件,然后再根据文件类型选择恰当的读取方式。一般来说,程序在读取有文件尾的文件时一般只会读到文件尾,并不会关注后面还有没有别的内容。

所以对于有文件尾的文件类型A来说,文件尾之后的内容往往不会对文件的查看有影响,增加的内容普通情况下不会被发现(拿十六进制编辑器不算普通情况)。我们可以往它的文件尾后面添加字符,数字,甚至是藏一个别的文件,这就是直接附加

要分离出附加在文件A后面的文件,可以通过在十六进制编辑器中观察文件尾后中隐含的文件头信息来判断文件A中附加的文件类型,从而进行提取,常见文件类型文件头(尾)如下:

文件类型 文件头 文件尾
JPEG( jpg ) FF D8 FF FF D9
PNG 89 50 4E 47 AE 42 60 82
GIF 47 49 46 38 00 3B
ZIP 50 4B 03 04 50 4B
RAR 52 61 72 21 /
Wave(wav) 57 41 56 45 /

类型列举不全,更详细的可以看大佬博客:https://blog.csdn.net/Ahuuua/article/details/109165473

说实话,我不推荐肉眼观察法提取(楽),一个是考验记忆力和眼力,最主要的是可能有藏比作者把一个相同类型的文件藏一个文件里,然后在前一个文件的文件尾和后一个文件的文件头之间藏东西(我是深受其害),对于我这种喜欢先拉到最后看文件尾的人很不友好。

我推荐使用 Binwalk 工具(Kali Linux自带)和 Foremost 工具(如果你的 linux 没有的话可以输入 apt-get install foremost 回车,其他工具类似)分离文件A中附加的其他文件,Binwalk 可以自动分析一个文件中包含的多个文件并将它们提取出来,Foremost 也可以分离文件而且有时候更好用一点,我们可以先用 Binwalk 进行分析,如果有隐藏文件再用 Foremost 分离,我们经常使用的一些相关使用方法如下:

binwalk [文件A] 	#分析文件A
binwalk -e [文件A] 	#分析文件A后自动提取已知的文件类型的隐藏文件
foremost [文件A] 		#分离文件A的隐藏文件,存到与文件A同目录的output文件夹中,同时在文件夹中生成一个日志文件

更详细的使用方法我懒得写了(笑),不过一般也用不着

例题

找了道例题:[BUUCTF] 二维码 大家可以自己先尝试一下,如果有困难再去看下面的题解。顺便说一下,做CTF题,遇到不会的题看题解是一件非常正常的事,关键在于能不能在这道题中吸取教训,只要下次做到类似的能做对就行,这也是一个积累经验的过程(最好看完自己不会的地方再自己做,不要照抄 flag)。

题解

下载下来是一张 PNG 格式的二维码,盲猜扫出来肯定不是结果。扔到 WinHex 中(或者 010-Editor ),一眼看到 png 文件尾和 zip 文件头(看多了就能一眼盯真

标签:文件,第二期,隐写,附加,我们,信息,文件类型,杂项
From: https://www.cnblogs.com/chtxrt/p/17061642.html

相关文章

  • 从0开始学杂项 第一期:什么是杂项
    Misc学习(一)-什么是杂项前言说句实话,在写这篇博客的20天前,我甚至都不知道什么是杂项。在这十几天里,我也只是对杂项进行了一个比较初步的学习,对各种工具的应用、对各种......
  • 数学杂项
    素数与同余素数个数定理记\(\leqslantx\)的素数个数为\(\pi(x)\),则有\(\pi(x)\sim\dfrac{x}{\lnx}\)。不会证。微积分?Miller-Rabin强伪素性检测算法简......
  • XSD 杂项 数据类型
    其他杂项数据类型包括布尔、base64Binary、十六进制、浮点、双精度、anyURI、anyURI以及NOTATION。布尔数据类型(BooleanDataType)布尔数据性用于规定true或false值。......
  • python | base64隐写
    python|base64隐写闲得无聊写了一个base64隐写库。叫b64steg安装直接pipinstallb64steg即可。项目地址:https://github.com/Mz1z/b64steg......
  • 「杂项」退役划水5
    2023年给自己画的一些饼,一些希望有条件的时候能做的事情,希望有条件吧(但是还没有完全想好,可能在春节前随机更新一些想学的东西:学画画(从小到大一直对会画画的人有种神秘......
  • 嵌入式:杂项汇编器伪指令
    AREA格式:AREA段名属性1,属性2,……功能:AREA伪操作用于定义一个代码段、数据段或特定属性的段。其中,段名若以数值开头,则该段名需用“|”括起来,如|1_test|,用C的编译器产生......
  • 第十四届模拟赛第二期试题【Java解析】
    目录​​✏️写在前面​​​​✨历史回顾​​​​......
  • Android studio学习第二期
    layout目录下app页面布局文件activity_main.xml的创建和跳转activity为一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务创建步骤这里选择第二个xml文......
  • JavaScript奇淫技巧:隐写术
    JavaScript奇淫技巧:隐写术本文将用JavaScript实现“图片隐写术”。什么是隐写术?将文本或其它数据写入图片的技术,称为“隐写术”。比如下面这张图中,便隐藏着秘密信息,虽然看起......
  • .NET杂项
    当Combox的SelectIndex设置的值超出子项后,index会自动切换成默认值-1,并不会抛出异常.TextBox的Text默认值是空字符串不是null。Assembly.GetCallingAssembly()和Assem......