首页 > 其他分享 >【CTF入门】BUUCTF Misc刷题(持续更新)

【CTF入门】BUUCTF Misc刷题(持续更新)

时间:2024-07-17 11:51:29浏览次数:10  
标签:文件 BUUCTF Misc CTF 格式 数据包 我们 PNG 图片

【CTF入门】BUUCTF Misc刷题

签到

点开发现签到题直接把flag交出来了,直接复制提交即可

image-20240715095026243

考点:了解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的帧

image-20240715104852847

用下面的左右箭头查看各个帧的图像,我们发现了隐藏的flag:flag{he11ohongke}

image-20240715105105499image-20240715105150700image-20240715105218405

考点:利用工具逐帧查看gif文件图像

你竟然赶我走

下载文件,发现里面是一张jpg图片,我们查看一下貌似什么也没有

biubiu

图片隐写没有具体的思路,我个人一般按照以下步骤做(来源于图书《CTF那些事儿》):

图片隐写思路:

  1. 使用010 Editor、strings等工具发现插入隐藏信息
  2. 使用StegSolve、zsteg等工具发现隐写隐藏信息
  3. 使用binwalk、foremost等工具提取隐藏信息

010 Editor:十六进制编辑器

它可以把文件以十六进制的格式打开、查看、修改,下载地址:http://www.caesum.com/handbook/Stegsolve.jar(虽然还有winhex等编辑器,但个人认为010 Editor更好用一些)

首先我们打开010 Editor,导入文件

image-20240715114935725

我们看到花花绿绿一大片的东西,啥啊这是?

JPG文件格式介绍

JPG格式没有直接保存图像的像素值信息,而是将其转换为YUV色彩空间(Y表示像素的亮度,U和V一起表示色调与饱和度)保存到图像信息中,保存时既可以选择无损压缩也可以选择有损压缩。

JPG文件按照“段”的格式来组织存储,一个文件由多个段组成,每个段代表不同的信息。同时,每个段也有自己唯一的标识符。标识符由两个字节组成,格式形如0x FF XX,其中FF代表不同的类型。

例如,SOI(Start Of Image)表示图像的开始,其段的标识符为0X FF D8。更加详细请查看这篇文章:

image-20240715145051513

整个JPG图片的组织便是由这些不同类型的段和经过JPG压缩后的数据组成的。(原文来自《CTF那些事儿》)

010 Editor的模板功能

010 Editor的模板功能可以自动为我们带来文件解析后的结果(亮色标记),我们就可以更加直观地看出JPG文件的各个段的位置,我们可以通过模板存储库来检查和添加文件的模板(一般没有模板会在你导入文件的时候提醒你自动下载)

image-20240715145328682

回到题目,我们发现从头到尾文件好像都没什么问题

image-20240715145718269

我们可以ctrl+f进入字符串搜索,因为是CTF题目所以直接搜索flag,查看是否有直接插入的flag信息,果然,我们发现了:

image-20240715145937338

flag插入在文件结尾段的后边,被模板识别为“unknowPadding”段,我们直接可以复制flag提交了

考点:利用十六进制编辑器找到隐藏的信息

补充:StegSolve功能二——查看图片的具体信息

这道题我们导入StegSolve,使用查看图片的具体信息功能也可以解开

image-20240715150550531image-20240715150624105

我们用这个功能可以查看图片的具体信息,其中包括了结尾插入的隐藏Ascii(字符串)

二维码

下载文件,发现里面是一张png格式的二维码图片,我们用二维码识别软件QR Research扫一扫,发现隐藏信息——secret is here,并没有flag

image-20240715232923685

按照图片隐写思路,我们优先打开010 editor打开图片查看:

image-20240715233802741

(PNG模板出了点问题,没有很明显的颜色,但不影响分析)

PNG文件格式简介

PNG是一种位图文件存储格式,既可以存储灰度图像(只有黑白灰,没有彩色),也可以存储彩色图像。PNG使用从LZ77派生的无损算法压缩图像信息,能获得较高的压缩比,并利用特殊的编码方法标记重复出现的数据,因而对图像的颜色没有影响,也不可能产生颜色的损失,这样就可以重复保存而不降低图像质量。

PNG图像格式文件由文件头和数据块(Chunk)组成。PNG图像整体格式如下:

文件头(89 50 4E 47 0D 0A 1A 0A)+数据块+数据块+数据块+......

回到题目,我们可以发现chunk[3]是PNG文件的文件尾,后面的chunk[4]块大小为0h也就是之后的内容无法被PNG模板解析了。image-20240715234026192

根据常见的文件头(记一些常用的就好)的记录我们可以发现50 4B 03 04是ZIP格式文件的文件头,也就是说这张图片后边插入了ZIP压缩包,我们应该如何把这压缩包从这张图片文件中分离出来呢?

文件分离

  1. 淳朴的复制粘贴手工艺:使用十六进制编辑器,我们把ZIP文件从文件头到文件尾的内容复制一遍,然后新建十六进制文件粘贴上去,保存后上“.zip”的后缀就有了。

    image-20240715235256241

    image-20240715235406108

    image-20240715235447401

  2. 利用Binwalk工具自动提取:Binwalk是一个自动提取文件系统,该工具可以自动完成指定文件的扫描,发现潜藏在文件中中所有可疑的文件类型以及文件系统。使用命令:

    binwalk QR_code.png -e
    

    -e 提取隐藏文件
    即可自动提取出其中的隐藏文件

    image-20240716000228758

    image-20240716000253386

  3. 利用foremost工具自动提取:foremost通过分析不同类型的头、尾和内部数据结构,同镜像文件的数据进行比对,来还原文件。支持19中类型文件的恢复。用户还可以通过配置文件扩展支持其他文件类型。使用命令:

    foremost QR_code.png -o yincang
    

    -o 输出文件名

    image-20240716000610455

    image-20240716000631669

总而言之,我们分离出了zip文件,我们尝试打开,发现里面存在一个名为“4number.txt”的文件。我们尝试解压却发现压缩包含有密码。

遇到含有密码的压缩包思路

  1. 仔细注意题目是否给出压缩包解压密码的相关线索,有的话就填或者是利用工具爆破
  2. 使用010 editor观察zip文件是否存在伪加密的情况
  3. 需要CRC32爆破的特殊情况

根据文件名“4number”,我们可以猜测解压密码是四个数字,我们使用ARCHPR工具开始进行爆破。

ARCHPR爆破压缩包密码

爆破压缩包密码的工具,含有多种爆破模式。因为正版需要购买所以给出吾爱破解论坛大佬的破解版下载贴:Advanced Archive Password Recovery 4.54-压缩包破解工具 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

我们打开ARCHPR,导入zip文件,攻击类型选择暴力(按照顺序一个个尝试密码),暴力范围选项选择数字,在长度那一栏最小口令和最大口令都填入4:

image-20240716002002155

image-20240716002017400

然后我们就可以开始爆破了,很快成功的消息就弹出来了:

image-20240716002057132

我们可以知道解压密码为:7639

解压文件,在“4number.txt”中得到了flag

image-20240716002217500

考点:文件分离、压缩包密码爆破

大白

下载文件,发现里面是一张png格式的图片:

image-20240717102247350

按照图片隐写思路,我们优先打开010 editor打开图片查看:

image-20240717091524765

我们根据题目提示,优先查看PNG图片是否进行了宽高隐写

PNG宽高隐写

原理:更改了PNG图片的宽度和高度,隐藏了被截取部分图片的信息

做法:根据图片的CRC校验值更改图片的长度和宽度(CRC校验值计算原理:https://www.bilibili.com/video/BV1V4411Z7VA?vd_source=69c558b0c7be97607c79afbd75bd1f7c,理解有这个东西就行)

image-20240717093505759

因此我们首先根据图片的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

运行脚本,可以得到:

image-20240717101947775

正确的宽高应该为679x479,16进制后的值应该为00 00 02 A7和00 00 01 DF,使用010editor更改PNG图片如下:image-20240717102132225

保存文件,发现图片的高度恢复出现了新的内容,得到flag:

image-20240717102216962

考点:PNG宽高隐写、理解爆破PNG宽高原理

乌镇峰会种图

下载文件,发现里面是一张jpg格式的图片:

image-20240717102525029

按照图片隐写思路,我们优先打开010 editor打开图片查看:

image-20240717102638478

又一次,我们在文件尾后面发现了插入的flag:

image-20240717102730650

考点:利用十六进制编辑器找到隐藏的信息

wireshark

下载文件,发现里面是一个pcap格式的文件。这是什么东西?

网络流量分析

网络分析工具对指定网卡进行数据包捕获,方便工作人员监测网络流量情况。

而pcap格式就是网络分析工具保存的网络数据包,是捕获的从网卡发送或者接收的每一个数据包的离线网络流量。

我们想要踏入这一部分的内容,首先我们应该熟悉网络协议的基础知识和OSI七层网络参考模型:https://www.bilibili.com/video/BV1EU4y1v7ju?vd_source=69c558b0c7be97607c79afbd75bd1f7c

我希望能够从题目入手,带大家对这方面的内容进行深入理解

回到题目,我们知道了pcap格式是网络分析工具保存的文件,那么我们应该拥有网络分析的工具。我们将重点介绍wireshark,这不仅是题目名,更是非常重要的网络分析工具。

wireshark

WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。官网下载地址:Wireshark · Download

首先我们用wireshark打开pacp文件:

image-20240717104745678

花花绿绿的一大片数据包,我们应该从何处入手?

数据包分析思路

  1. 观察分组数(wireshark右下角),如果分组数量较大我们就进行协议分级进行分析,数量较小就逐个人工查看(数量小协议分级效果不明显,但还是可以优先协议分级减小工作量)
  2. 根据协议分级的结果,我们优先分析数量多占比高的协议流量,分析过程根据题目不同思路也有所不同

wireshark功能一:协议分级

对数据包按TCP/IP协议栈从底层向高层逐层进行统计,显示每个协议的数据包数、字节数以及各协议所占的百分比。

image-20240717105644790

image-20240717110357369

我们可以发现应用层HTTP协议占比最高,应该优先分析。

wireshark功能二:显示过滤器

决定哪些数据包被显示,在显示过滤器中输入表达式,使过滤规则生效。

在前面我们已经找到了需要显示过滤来分析的HTTP协议,因此我们在协议分级窗口中选中HTTP协议作为过滤器应用:

image-20240717110806356

image-20240717111219998

这样我们就显示过滤了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”字段:

image-20240717112649809

题目说管理员的密码即是答案,因此使用flag{}包起提交即可

考点:网络流量分析、理解HTTP协议数据包结构

补充:CTF流量分析解题钻空

我们明白要分析HTTP协议后,直接在显示过滤器中查找包含”flag“字段的数据包有时候能直接找到我们想要的东西:

image-20240717113113906

N种方法解决

下载文件,发现里面是一个exe格式的文件,我们运行也运行不起:

image-20240717113506802

这又不是逆向题,给我们exe文件干嘛!所以我们优先使用010 editor分析文件:

image-20240717113626448

发现它的内容纯纯的就是一普通的文本文件,根据左上方开头的提示我们发现这些数据是源内容经历了base64编码的jpg格式的图片,因此我们使用cyberchef来进行解码:

image-20240717113824045

解码后的内容虽然是乱码,但看文件头含有“PNG”字段应该就是我们的PNG格式文件了!cyberchef有个很方便的魔法解密功能,可以直接分析出下一步应该如何解密,点击Output栏的魔法棒图标即可自动解密:

image-20240717114135101

可以发现它自动将PNG图片16进制的乱码转为了图片,出现了二维码,直接扫描解密出二维码隐藏的内容:

image-20240717114430238

考点:会使用工具解码base64、会将PNG图片的16进制的乱码转换为PNG图片

补充:

我们也可以将输出内容复制粘贴到010 editor里面创建新的16进制文件,保存为.png格式也是可以发现二维码图片的。

标签:文件,BUUCTF,Misc,CTF,格式,数据包,我们,PNG,图片
From: https://www.cnblogs.com/handsomexuejian/p/18302560

相关文章

  • [WUSTCTF2020]Cr0ssfun
    64位,进ida没啥重要的,主要是check函数等于1才能跳出后面是一个函数可以看到都是数组,后面还有几个这样的函数,就不都截图了,直接上EXP吧a1=33*[0]a1[1]=99a1[25]=64a1[27]=101a1[4]=50a1[17]=114a1[29]=102a1[17]=114a1[24]=95a1[2]=116a1[9]=......
  • [buuctf pwn]rip
    先checksec一下,64位,没开栈溢出保护进ida看一下,有个gets,s是15个字符然后还有另一个fun()函数现在我们就可以利用栈溢出用15个字符先填满函数缓冲区,然后用8个字符(64位)填满缓冲区下面的rbp区域,再下面就是返回地址了,我们把它填成system命令的地址0x40118AEXP如下frompwnim......
  • 不存在的misc密码
    工具CyberChef千千秀字随波逐流工作室CTF在线工具Bugkubase家族base16666C61677B3132333435363738397Dbase32MZWGCZ33GEZDGNBVGY3TQOL5base45U.C5EC$PFQF60R6J%6%47Z2base583sCWBxPYGkdVfKBgHsruabase62ko4RLHSQGg5zPcaYwLozbase64ZmxhZ3sxMjM0NTY3ODl9b......
  • [GXYCTF2019]Ping Ping Ping
    [GXYCTF2019]PingPingPing(命令执行绕过总结)题目来源收录于:BUUCTFGXYCTF2019题目描述提示较为明确,get方法传参127.0.0.1后结果如下比较容易想到联合执行命令,先看有哪些文件尝试直接读取flag.php读取失败,对空格进行了过滤。题解以下内容参考文章:https://blog......
  • 【CTF入门】BUUCTF Crypto刷题(持续更新)
    【CTF入门】BUUCTFCrypto刷题(持续更新)一眼就解密题目介绍如图:我们可以发现加密的字符串由base64编码,因此base64解码后即可解密。什么是base64编码,又应该如何解码呢?base64编码介绍原理:https://www.bilibili.com/video/BV1hk4y1S7PJ?vd_source=69c558b0c7be97607c79afbd75bd1......
  • NSSCTF中24网安培训day2中web题目
    [SWPUCTF2021新生赛]ez_unserialize这道题目考察php反序列化的知识点打开题目,发现没有提示,我们试着用御剑扫描目录文件,发现存在robots.txt的文件接着访问这个文件,发现是一段php反序列化代码,我们需要进行序列化的转换简单的构造exp代码如下,在末尾那里<?phperror_re......
  • 【CTF入门】BUUCTF N1BOOK闯关(持续更新)
    【CTF入门】BUUCTFN1BOOK闯关(持续更新)[第一章web入门]常见的搜集点击启动靶机,为我们生成了一个链接,这就是我们要攻击的地址。点击链接进入,发现这个页面:可以看出这道题目的考点是信息搜集敏感文件,在这里简单介绍下常见的敏感文件(来源于《从0到1CTFer成长之路》)敏感目录泄露......
  • PolarD&N-CTF靶场web通关记录
    新人尝试,还请见谅!!!web简单swp进题先扫dirsearch然后发现了一个叫做/.index.php.swp的备份文件。访问/.index.php.swp这时我们需要post一个名为xdmtql的变量,然后这个变量不能是数组。不能与/sys.nb/is正则匹配。但是结果的sysnb要在第一位。但是结果的sysnb要在第一位。......
  • BUUCTF-ningen1
    1.由于是jpg后缀,所以先打开详细信息看看里面有没有东西(png后缀的不需要)2.发现没有东西后,将其放在010Editor里面,看看里面有没有隐藏的文件在010Editor里面发现了PK(PK文件是一种压缩文件格式),于是将其选择保存(后缀记得写成.zip)。3.将压缩包保存在电脑后打开发现需要密码,......
  • buuctf-FLAG1
    1.下载后发现是一张图片;按照做题思路首先打开010Editor查看里面有没有东西,这个图片中我没发现什么东西,于是将图片放在Stegsolve.jar中查看看图片没啥问题后,进行数据提取(dataextract),进行预览发现了504b0304,也就是说里面藏了一个压缩包,这个时候进行保存打开后只发现了一......