【CTF入门】BUUCTF Misc刷题
签到
点开发现签到题直接把flag交出来了,直接复制提交即可
考点:了解CTF中flag的格式一般为flag{}
金三胖
下载文件,发现里面是一张gif图片,我们查看一下发现总有东西一闪而过
这里我们介绍第一个在Misc图像隐写中非常常用的工具——StegSolve
StegSolve功能一——逐帧查看gif文件
隐写图片解析神器,下载地址:http://www.caesum.com/handbook/Stegsolve.jar
它的用途有很多,之后我们会一步一步进行讲解,首先我们打开StegSolve(打不开的,参考这篇文章:详细教程:Stegsolve的下载,jdk的下载、安装以及环境的配置_stegsolve下载-CSDN博客)
打开发现只有一个非常小的窗口,点击File->open导入gif图片
Analyse->Frame Browser使用帧浏览器功能分解gif的帧
用下面的左右箭头查看各个帧的图像,我们发现了隐藏的flag:flag{he11ohongke}
考点:利用工具逐帧查看gif文件图像
你竟然赶我走
下载文件,发现里面是一张jpg图片,我们查看一下貌似什么也没有
图片隐写没有具体的思路,我个人一般按照以下步骤做(来源于图书《CTF那些事儿》):
图片隐写思路:
- 使用010 Editor、strings等工具发现插入隐藏信息
- 使用StegSolve、zsteg等工具发现隐写隐藏信息
- 使用binwalk、foremost等工具提取隐藏信息
010 Editor:十六进制编辑器
它可以把文件以十六进制的格式打开、查看、修改,下载地址:http://www.caesum.com/handbook/Stegsolve.jar(虽然还有winhex等编辑器,但个人认为010 Editor更好用一些)
首先我们打开010 Editor,导入文件
我们看到花花绿绿一大片的东西,啥啊这是?
JPG文件格式介绍
JPG格式没有直接保存图像的像素值信息,而是将其转换为YUV色彩空间(Y表示像素的亮度,U和V一起表示色调与饱和度)保存到图像信息中,保存时既可以选择无损压缩也可以选择有损压缩。
JPG文件按照“段”的格式来组织存储,一个文件由多个段组成,每个段代表不同的信息。同时,每个段也有自己唯一的标识符。标识符由两个字节组成,格式形如0x FF XX,其中FF代表不同的类型。
例如,SOI(Start Of Image)表示图像的开始,其段的标识符为0X FF D8。更加详细请查看这篇文章:
整个JPG图片的组织便是由这些不同类型的段和经过JPG压缩后的数据组成的。(原文来自《CTF那些事儿》)
010 Editor的模板功能
010 Editor的模板功能可以自动为我们带来文件解析后的结果(亮色标记),我们就可以更加直观地看出JPG文件的各个段的位置,我们可以通过模板存储库来检查和添加文件的模板(一般没有模板会在你导入文件的时候提醒你自动下载)
回到题目,我们发现从头到尾文件好像都没什么问题
我们可以ctrl+f进入字符串搜索,因为是CTF题目所以直接搜索flag,查看是否有直接插入的flag信息,果然,我们发现了:
flag插入在文件结尾段的后边,被模板识别为“unknowPadding”段,我们直接可以复制flag提交了
考点:利用十六进制编辑器找到隐藏的信息
补充:StegSolve功能二——查看图片的具体信息
这道题我们导入StegSolve,使用查看图片的具体信息功能也可以解开
我们用这个功能可以查看图片的具体信息,其中包括了结尾插入的隐藏Ascii(字符串)
二维码
下载文件,发现里面是一张png格式的二维码图片,我们用二维码识别软件QR Research扫一扫,发现隐藏信息——secret is here,并没有flag
按照图片隐写思路,我们优先打开010 editor打开图片查看:
(PNG模板出了点问题,没有很明显的颜色,但不影响分析)
PNG文件格式简介
PNG是一种位图文件存储格式,既可以存储灰度图像(只有黑白灰,没有彩色),也可以存储彩色图像。PNG使用从LZ77派生的无损算法压缩图像信息,能获得较高的压缩比,并利用特殊的编码方法标记重复出现的数据,因而对图像的颜色没有影响,也不可能产生颜色的损失,这样就可以重复保存而不降低图像质量。
PNG图像格式文件由文件头和数据块(Chunk)组成。PNG图像整体格式如下:
文件头(89 50 4E 47 0D 0A 1A 0A)+数据块+数据块+数据块+......
回到题目,我们可以发现chunk[3]是PNG文件的文件尾,后面的chunk[4]块大小为0h也就是之后的内容无法被PNG模板解析了。
根据常见的文件头(记一些常用的就好)的记录我们可以发现50 4B 03 04是ZIP格式文件的文件头,也就是说这张图片后边插入了ZIP压缩包,我们应该如何把这压缩包从这张图片文件中分离出来呢?
文件分离
-
淳朴的复制粘贴手工艺:使用十六进制编辑器,我们把ZIP文件从文件头到文件尾的内容复制一遍,然后新建十六进制文件粘贴上去,保存后上“.zip”的后缀就有了。
-
利用Binwalk工具自动提取:Binwalk是一个自动提取文件系统,该工具可以自动完成指定文件的扫描,发现潜藏在文件中中所有可疑的文件类型以及文件系统。使用命令:
binwalk QR_code.png -e
-e 提取隐藏文件
即可自动提取出其中的隐藏文件 -
利用foremost工具自动提取:foremost通过分析不同类型的头、尾和内部数据结构,同镜像文件的数据进行比对,来还原文件。支持19中类型文件的恢复。用户还可以通过配置文件扩展支持其他文件类型。使用命令:
foremost QR_code.png -o yincang
-o 输出文件名
总而言之,我们分离出了zip文件,我们尝试打开,发现里面存在一个名为“4number.txt”的文件。我们尝试解压却发现压缩包含有密码。
遇到含有密码的压缩包思路
- 仔细注意题目是否给出压缩包解压密码的相关线索,有的话就填或者是利用工具爆破
- 使用010 editor观察zip文件是否存在伪加密的情况
- 需要CRC32爆破的特殊情况
根据文件名“4number”,我们可以猜测解压密码是四个数字,我们使用ARCHPR工具开始进行爆破。
ARCHPR爆破压缩包密码
爆破压缩包密码的工具,含有多种爆破模式。因为正版需要购买所以给出吾爱破解论坛大佬的破解版下载贴:Advanced Archive Password Recovery 4.54-压缩包破解工具 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
我们打开ARCHPR,导入zip文件,攻击类型选择暴力(按照顺序一个个尝试密码),暴力范围选项选择数字,在长度那一栏最小口令和最大口令都填入4:
然后我们就可以开始爆破了,很快成功的消息就弹出来了:
我们可以知道解压密码为:7639
解压文件,在“4number.txt”中得到了flag
考点:文件分离、压缩包密码爆破
大白
下载文件,发现里面是一张png格式的图片:
按照图片隐写思路,我们优先打开010 editor打开图片查看:
我们根据题目提示,优先查看PNG图片是否进行了宽高隐写
PNG宽高隐写
原理:更改了PNG图片的宽度和高度,隐藏了被截取部分图片的信息
做法:根据图片的CRC校验值更改图片的长度和宽度(CRC校验值计算原理:https://www.bilibili.com/video/BV1V4411Z7VA?vd_source=69c558b0c7be97607c79afbd75bd1f7c,理解有这个东西就行)
因此我们首先根据图片的CRC校验值计算PNG图片正确的长度和宽度:
import binascii
import struct
crcbp = open("dabai.png", "rb").read() #打开图片
crc32frombp = int(crcbp[29:33].hex(),16) #读取图片中的CRC校验值
print(crc32frombp)
for i in range(4000): #宽度1-4000进行枚举
for j in range(4000): #高度1-4000进行枚举
data = crcbp[12:16] + \ #创建一个数据段,内容为从文件内容的字节12到16(包含第12字节,不包含第16字节),这部分通常是固定的。
struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29] #将宽度变量'i'和高度变量'j'转换成大端格式的四字节(大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中)
crc32 = binascii.crc32(data) & 0xffffffff #计算data数据段的CRC校验值,'& 0xffffffff'确保CRC校验值为32位
print(crc32)
if(crc32 == crc32frombp): #计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
print(i, j)
print('hex:', hex(i), hex(j))
exit(0)
struck.pack(format,v1,v2,...):返回一个字节对象,该对象包含根据格式字符串格式打包的值v1、v2,…。参数必须与格式要求的值完全匹配。
binascii. crc32 (data) :计算data的 32 位校验和——CRC-32
运行脚本,可以得到:
正确的宽高应该为679x479,16进制后的值应该为00 00 02 A7和00 00 01 DF,使用010editor更改PNG图片如下:
保存文件,发现图片的高度恢复出现了新的内容,得到flag:
考点:PNG宽高隐写、理解爆破PNG宽高原理
乌镇峰会种图
下载文件,发现里面是一张jpg格式的图片:
按照图片隐写思路,我们优先打开010 editor打开图片查看:
又一次,我们在文件尾后面发现了插入的flag:
考点:利用十六进制编辑器找到隐藏的信息
wireshark
下载文件,发现里面是一个pcap格式的文件。这是什么东西?
网络流量分析
网络分析工具对指定网卡进行数据包捕获,方便工作人员监测网络流量情况。
而pcap格式就是网络分析工具保存的网络数据包,是捕获的从网卡发送或者接收的每一个数据包的离线网络流量。
我们想要踏入这一部分的内容,首先我们应该熟悉网络协议的基础知识和OSI七层网络参考模型:https://www.bilibili.com/video/BV1EU4y1v7ju?vd_source=69c558b0c7be97607c79afbd75bd1f7c
我希望能够从题目入手,带大家对这方面的内容进行深入理解
回到题目,我们知道了pcap格式是网络分析工具保存的文件,那么我们应该拥有网络分析的工具。我们将重点介绍wireshark,这不仅是题目名,更是非常重要的网络分析工具。
wireshark
WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。官网下载地址:Wireshark · Download
首先我们用wireshark打开pacp文件:
花花绿绿的一大片数据包,我们应该从何处入手?
数据包分析思路
- 观察分组数(wireshark右下角),如果分组数量较大我们就进行协议分级进行分析,数量较小就逐个人工查看(数量小协议分级效果不明显,但还是可以优先协议分级减小工作量)
- 根据协议分级的结果,我们优先分析数量多占比高的协议流量,分析过程根据题目不同思路也有所不同
wireshark功能一:协议分级
对数据包按TCP/IP协议栈从底层向高层逐层进行统计,显示每个协议的数据包数、字节数以及各协议所占的百分比。
我们可以发现应用层HTTP协议占比最高,应该优先分析。
wireshark功能二:显示过滤器
决定哪些数据包被显示,在显示过滤器中输入表达式,使过滤规则生效。
在前面我们已经找到了需要显示过滤来分析的HTTP协议,因此我们在协议分级窗口中选中HTTP协议作为过滤器应用:
这样我们就显示过滤了HTTP协议相关的数据包,可以看见左上方的应用显示过滤器的输入框内容也添加了”http“,现在只有29个数据包了,我们即将开始逐个分析。
HTTP协议数据包分析
HTTP协议介绍:https://www.bilibili.com/video/BV1zb4y127JU?vd_source=69c558b0c7be97607c79afbd75bd1f7c
HTTP数据包分析:HTTP数据包详解 - dream_fly_info - 博客园 (cnblogs.com)
wireshark功能三:数据包分析
在左下角的TCP/IP协议栈解析窗口我们可以以更清晰的格式分析协议的消息结构,我们逐个分析,发现第三个POST请求包的URL加密信息里面找到了“password”字段:
题目说管理员的密码即是答案,因此使用flag{}包起提交即可
考点:网络流量分析、理解HTTP协议数据包结构
补充:CTF流量分析解题钻空
我们明白要分析HTTP协议后,直接在显示过滤器中查找包含”flag“字段的数据包有时候能直接找到我们想要的东西:
N种方法解决
下载文件,发现里面是一个exe格式的文件,我们运行也运行不起:
这又不是逆向题,给我们exe文件干嘛!所以我们优先使用010 editor分析文件:
发现它的内容纯纯的就是一普通的文本文件,根据左上方开头的提示我们发现这些数据是源内容经历了base64编码的jpg格式的图片,因此我们使用cyberchef来进行解码:
解码后的内容虽然是乱码,但看文件头含有“PNG”字段应该就是我们的PNG格式文件了!cyberchef有个很方便的魔法解密功能,可以直接分析出下一步应该如何解密,点击Output栏的魔法棒图标即可自动解密:
可以发现它自动将PNG图片16进制的乱码转为了图片,出现了二维码,直接扫描解密出二维码隐藏的内容:
考点:会使用工具解码base64、会将PNG图片的16进制的乱码转换为PNG图片
补充:
我们也可以将输出内容复制粘贴到010 editor里面创建新的16进制文件,保存为.png格式也是可以发现二维码图片的。
标签:文件,BUUCTF,Misc,CTF,格式,数据包,我们,PNG,图片 From: https://www.cnblogs.com/handsomexuejian/p/18302560