首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >BUUCTF通关之路 - Misc Part 6

BUUCTF通关之路 - Misc Part 6

原创
作者头像
OwenW
发布2025-08-29 20:55:33
发布2025-08-29 20:55:33
2300
举报
文章被收录于专栏:BUUCTF通关之路BUUCTF通关之路

大家好,一起加油啊,今天也是12道题目。


1. [SUCTF2018]single dog

首先下载题目文件,是一张jpg格式图片。这里直接放进随波逐流工具分析,发现文件结束标志后还有一段16进制编码。

这里将这串16进制字符放进CyberChef,发现是一个PK开头的压缩文件,这里把文件下载下来并解压缩,得到一个充满颜文字的文本文件。

在百度上搜索“颜文字加密”会出现一个有关“颜文字加密源码”的文章,其中用到了一个叫“aaencode”的加密工具,它把js语言加密成颜文字。这里我们用一个在线解密网站进行解密,得到答案。

类型

图片隐写、加密算法

工具

随波逐流工具、CyberChef、aaencode

Flag

flag{happy double eleven}

2. 黑客帝国

下载题目文件,对压缩包解压缩,得到一个文本文件,其中包含了大量的16进制字符串,放进CyberChef转换为ASCII,发现内容是一个rar格式的压缩文件。

这里把压缩文件提取出来,发现需要密码,直接用ARCHPR遍历四位数字来爆破,得到密码为3690。

压缩文件内有一个png后缀的文件但无法打开,这里把文件扔到随波逐流工具里看一下,发现打不开的原因是文件头出错了。我们用010editor打开该文件来具体分析一下。

无法打开的png文件头
无法打开的png文件头

这里可以看到,该文件的头部出现了两个熟悉的字符串,“PNG”和“JFIF”,前者是png格式文件头的标识符,后者是jpg格式文件头特有的。这里我们需要做的就是把文件修复回正常的文件头格式,这里放两个正常的图片文件头,分别是png和jpg的。

png
png
jpg
jpg

这里会发现原来的图片更加接近jpg的格式,所以我们的目标就是修复成jpg格式的文件。直接用010editor修改前面的4位,改为“FF D8 FF E0”,保存后重新查看图片,就可以正常解析了,flag就在上面。

类型

字符编码、压缩文件密码爆破、图片修复

工具

CyberChef、ARCHPR、随波逐流工具、010editor

Flag

flag{57cd4cfd4e07505b98048ca106132125}

3. [HBNIS2018]低个头

这道题直接给了一个文本文件,内容是需要对“EWAZX RTY TGB IJN IO KL”解密,这个不是任何一种已知加密方式,后面结合题目“低个头”,实际是指键盘上这些字母的连线,大致如下。

类型

解密

工具

Flag

flag{CTF}

4. [SWPU2019]伟大的侦探

下载题目文件,是一个压缩文件,其中包含一个文本文件和一个misc文件夹,其中文本文件不需要解压密码,但文件夹需要。文本文件名称为“密码”,所以很可能是需要破解文本文件内的内容,再用破解出的密码去解压另外一部分文件。这里文本内容如下。

代码语言:txt
复制
压缩包密码:摂m墷m卪倕ⅲm仈Z
呜呜呜,我忘记了压缩包密码的编码了,大家帮我解一哈。

其中压缩包密码是一段乱码,这个乱码不像是任何一种加密形式,更像是因为字符编码解析到了错误的格式,想要确定这一点,可以放进kali中打开文件,这时会发现文件名称和内容都是乱码,并且kali会提示该文件内容不符合当前编码格式。因为和windows系统的notepad不同,kali系统的文件资源管理器也叫Mousepad会检查所有字符的编码格式是否正确,这里其中一部分也就是密码这部分是使用的其它编码格式就会报错。

其中存在无法打印的字符,可以由此判断该编码是非ASCII编码。这里有两种方法识别其编码类型。一种比较简单的是把它放进010editor,010editor上面提供了很多非ASCII编码的预览,我们可以每种都试一下看哪种编码解析存在语义。另外一种方式就是把其中乱码的字符截取下来,通过一些特殊的编码识别库去识别,比较常用的有python的chardet库,可以准确识别本地文本文件的编码格式。

这里直接用简单方法,被文本全部放进010editor,最终发现该编码是“EBCDIC”,这种编码在计算机发展早期也是编码标准之一,主要用于大型主机系统。

这里用EBCDIC进行解析后,就得到了其中一段有语义的字符串,该字符串就是压缩文件的密码。

对文件进行解压缩,发现其中含有多张不同姿势的小人,这个是CTF比赛中常见的“跳舞小人”加密。小人线条的粗细和四肢的弯曲度不是完全准确的,但大致的动作形态都是相同的,这里提供两个参考链接。(https://www.tuiliz.com/thread-3057-1-1.htmlhttps://codepen.io/anie116/full/jdzvJK),按顺序依次连接就是我们要的答案了。

对照表
对照表

类型

字符编码、加密解密

工具

010editor

Flag

flag{iloveholmesandwllm}

5. [MRCTF2020]你能看懂音符吗

下载题目文件,是个rar后缀的压缩文件,但是在打开时显示未知文件格式,这里把该文件放进随波逐流工具内看一下。工具内显示是文件头错了。rar压缩文件的标准文件头是52 61开头,但是这里这个文件被修改成了61 52所以无法打开。

我们把文件放进010editor,把前面的两位改为52 61并保存,文件就可以正常打开了。

其中包含了一个docx文件,直接打开没有什么有用信息。这里要注意,类似我们之前遇到过的xlsx文件,所有的后面带x的文件本质上都是多个xml文件的压缩。也就是说,所有这类文件都可以修改为压缩文件格式并解压缩。这里把docx后缀改为zip并解压缩就可以得到内部包含的所有xml文件。

我们需要的东西大概率就是在这些文件中,放到kali中查找一些特殊关键词,很快就能发现一串特殊的音符。

代码语言:txt
复制
♭♯♪‖¶♬♭♭♪♭‖‖♭♭♬‖♫♪‖♩♬‖♬♬♭♭♫‖♩♫‖♬♪♭♭♭‖¶∮‖‖‖‖♩♬‖♬♪‖♩♫♭♭♭♭♭§‖♩♩♭♭♫♭♭♭‖♬♭‖¶§♭♭♯‖♫∮‖♬¶‖¶∮‖♬♫‖♫♬‖♫♫§=

这是音符加密,也刚好和题目相呼应,接下来就是需要对该串音符进行解密,可惜查了半天,关于音符加密的解密网站基本都失效了,没有找到解密方式,但看了一下题目解析,解密的结果就是答案。这里也是直接放上别的前辈写完的答案,感觉没有必要在这种地方深究,后续如果有能用的工具我会再回来补充。

类型

文件修复、加密解密

工具

随波逐流工具、010editor

Flag

flag{thEse_n0tes_ArE_am@zing~}

6. 我吃三明治

题目让我想起以前爱看的一个小说作家叫“我吃西红柿”。回到题目上,下载题目文件,压缩文件内有一张jpg格式的图片,是一张三明治图片,直接放进随波逐流工具。工具显示,binwalk识别出两个图片。

这里我们放进010editor看一下,题目说了三明治,两片面包没法做三明治。在两张图片的中间位置,也就是一个图片的结尾(FF D9)和另外一张图片的开头(FF D8)中间还存在一串字符,我们这里把这串字符提取出来。

代码语言:txt
复制
MZWGCZ33GZTDCNZZG5SDIMBYGBRDEOLCGY2GIYJVHA4TONZYGA2DMM3FGMYH2

这个字符串不认识,放到CyberChef中想要看能否自动识别,可惜没有识别出来。只能放进随波逐流工具中一键解码,该功能并不能识别字符串,但会把所有类型解码都枚举一遍,并会对结果中有flag相关词语的输出高亮。这里也是发现其是用了base32编码。

类型

图片隐写、字符编码

工具

随波逐流工具、010editor

Flag

flag{6f1797d4080b29b64da5897780463e30}

7. [ACTF新生赛2020]NTFS数据流

一看题目,大概能猜到又是一道NTF备用数据流隐写的题目,上一篇文章“Misc Part 5”中的第九题详细讲了什么是ntfs备用数据流,这里只讲做法了。直接下载题目文件并解压缩,是另外一个rar格式的压缩文件,再一次解压缩出现一个flag文件夹。文件夹内有很多文本文件。

不用管文本内的内容,直接打开AlternateStreamView工具,选中该文件夹路径,扫描发现了一个备用数据流。

复制流地址,并在powershell中通过“notepad [地址]”打开,就可以得到flag了。

类型

NTFS隐写

工具

AlternateStreamView

Flag

flag{AAAds_nntfs_ffunn?}

8. [SWPU2019]你有没有好好看网课?

下载题目文件,是一个压缩包,包内还有两个压缩文件分别是“flag2”和“flag3”。两个都加密了,并且判断后都不是伪加密。先看flag2,什么信息都没有,尝试了四位数字爆破也没有结果。

flag3压缩包写了备注,本地用Bandizip压缩工具打开可以直接看到备注,备注显示该压缩包是6位数字密码。这里用ARCHPR开始爆破,很快就得到了密码,密码是183792。(这里没懂这个工具是怎么遍历这么快的,四位数字都没有这么快)。

解压缩后flag3中有两个文件,分别是一个影流之主的视频,一个是一个word文档,文档内容如下。

尝试了一些docx的隐写解法,没发现什么东西,可能这里就是要让我们知道5、20、7、11这四个数字。视频是总共只有13秒,所以猜测是5.20、7.11这两个数的组合方式,这个组合下要么是指秒数要么是帧数。一开始我是用OpenShot Video Editor这个视频处理工具,并且确实在5.21帧、7.11帧处发现帧被修改了,但是非常模糊。后面改用Kinovea更加的清晰了。但是Kinovea不是出现在5.21和7.11。后面了解到不同视频软件对视频处理一秒分的帧数不同,有一秒30份的比如OpenShot,也有一秒100份的Kinovea。所以5.20对应的Kinovea应该是5.66左右,另外一帧同理。

我这里最后看到的分别是5.67和7.37处存在编辑痕迹,每个人可能会有轻微不同,和所用软件有关。提醒一下,这个原文件好像没法直接被Kinovea打开,可能是中文路径的问题,把文件名改为英文就能正常打开了。

5.67
5.67
7.37
7.37

第一个是由点组成的字符串,这里一看就像是敲击码,原理很简单,解密逻辑可以参考wiki条目

代码语言:txt
复制
..... ../... ./... ./... ../
52 / 31 / 31 / 32
W / L / L / M
WLLM

第二个是base64的字符串,直接放进CyberChef解码得到原文。

两个组合起来就是“WLLMup_up_up”,尝试了一下,全部小写就是flag2压缩包的密码。解压后的图片直接放进随波逐流工具,得到答案。

类型

压缩文件密码爆破、音频隐写、字符编码、图片隐写

工具

Bandizip、ARCHPR、Kinovea、CyberChef、随波逐流工具

Flag

flag{A2e_Y0u_Ok?}

9. sqltest

看题目就知道要考sql注入有关的题目。先下载题目文件,是个pcapng,用wireshark打开。一打开,就能直观的看见有很多sql注入的payload。

这里已知了是HTTP,且是通过get请求注入payload的,所以可以左上角选择“文件”-“导出对象”-“HTTP”,查看所有HTTP的GET请求。

这里很显然就是布尔类型的盲注,一开始是在爆破数据库名称,再到表名,最后到flag的值。我们只需要知道flag的值所以直接往下看看到这一段就行,%20就是空格,这里我删除了,可以看的更加直观。

代码语言:txt
复制
ascii(substr(((select concat_ws(char(94), flag)  from db_flag.tb_flag  limit 0,1)), 1, 1))>100

仔细分析一下,这样下次你也能快速判断。我们从内到外的方式进行分析。

代码语言:txt
复制
1. char(94)

    char() 函数用于将ASCII码转换为对应的字符。
    
    94 的ASCII码对应的字符是 ^ (脱字符)。
    
    这里使用它主要是作为一个分隔符,或者是为了绕过对引号的过滤(因为不需要用单引号包裹^)。

2. select concat_ws(char(94), flag) from db_flag.tb_flag limit 0,1

    from db_flag.tb_flag: 从名为 db_flag 数据库的 tb_flag 表中查询。
    
    limit 0,1: 只返回结果集中的第一行(从第0行开始,取1条)。
    
    concat_ws(separator, str1, str2, ...): 带分隔符的连接函数。它用第一个参数作为分隔符,将后续的所有参数连接成一个字符串。
    
    假设 flag 字段的值是 flag{example},那么这条子查询的结果将是:flag{example}(因为只有一个字段,concat_ws 没什么实际效果,但攻击者可能为后续拼接多个字段做准备)。

3. substr( (子查询结果), 1, 1)

    substr() 或 substring() 函数用于截取字符串。
    
    参数:(字符串, 开始位置, 长度)
    
    这里是从第1个字符开始,截取长度为1的字符。
    
    也就是获取上面那个子查询结果(flag{example})的第一个字符,即 f。

4. ascii( ('f') )

    ascii() 函数返回给定字符的ASCII码值。
    
    字符 'f' 的ASCII码是 102。

5. 最终比较:102 > 100

    整个表达式最终变成一个简单的布尔值(True 或 False)。
    
    如果第一个字符的ASCII码大于100,则返回 True (1),否则返回 False (0)。

这就是整句布尔注入的逻辑了,同时布尔注入为了增加效率,会采用二分法进行搜索,仔细看这里的流量,也可以发现同位数的字符判断是通过二分法进行判断的,这样可以显著提高注入的速度。再详细的就不扩展了,后续如果Misc做完了也许会做Web相关的,到时候sql注入的题目不会少。

好了,所以这里的注入逻辑是每次判断准确一个字符后,就会跳转到下一位,从(1,1)变为(2,1),这里只要关注变动前的ASCII码就行,比如第一位是102,第二位是108,第三位是97以此类推。

代码语言:txt
复制
收集如下:
102  108  97 103 123 52 55 101 100 98 56 51 48 48 101 100 53 102 57 98 50 56 102 99 53 52 98 48 100 48 57 101 99 100 101 102 55 125

随便找一个ASCII转文本工具,转出的文本就是答案。

类型

日志分析、字符编码

工具

Wireshark

Flag

flag{47edb8300ed5f9b28fc54b0d09ecdef7}

10. [UTCTF2020]docx

下载题目文件,是个docx文件,老生常谈了,遇到docx文件直接改后缀名为zip然后解压缩,分析文件。最后在word-media这个文件夹中发现了写有答案的图片。

类型

文件隐写

工具

Flag

flag{unz1p_3v3ryth1ng}

11. john-in-the-middle

下载文件,是个日志pcapng文件,老样子,追踪TCP流,发现数据流主要是请求文件。所以左上角选择“文件”-“导出对象”-“HTTP”,查看具体请求了哪些文件。

这里js、css、woff基本都是网站配置或前端文件,而png和mod文件比较特别就下载下来看看,png可能是图片隐写,mod我当时不清楚是做什么的就想着下载下来看看(其实现在我也不知道。。好像是某种音频文件)。其中logo这个图片有点意思,中间有一个旗子,并且下面有一条隐隐约约的杠,有可能是LSB隐写。

放进Stegsolve中看看,结果在随机颜色通道上发现底部有个flag。

类型

日志分析、图片隐写

工具

Wireshark、Stegsolve

Flag

flag{J0hn_th3_Sn1ff3r}

12. [ACTF新生赛2020]swp

也是一道日志分析题目,下载日志文件并用Wireshark打开,发现是在用HTTP请求文件,并且流量挺大,追踪HTTP流的方式一个个找太没效率了。和上一题一样,左上角选择“文件”-“导出对象”-“HTTP”,查看具体请求了哪些文件。其中发现一个叫secret的压缩文件。

这里下载后发现需要密码,放进010editor中看一下是不是伪加密,很明显的伪加密,开头结尾不一致,这里修改结尾部分为00就行。

修改前
修改前
修改后
修改后

还有一个更快的方法,就是把文件直接丢进随波逐流工具,工具会自动发现伪加密并生成除去伪加密的文件。

提取出来的flag发现不是一个文本文件,放进kali用strings看一下可打印字符,发现flag就在其中。

类型

日志分析、伪加密

工具

wireshark、010editor、随波逐流工具

Flag

flag{c5558bcf-26da-4f8b-b181-b61f3850b9e5}


感谢大家支持,喜欢的可以点点赞给个关注,后续我会一直更新的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. [SUCTF2018]single dog
  • 2. 黑客帝国
  • 3. [HBNIS2018]低个头
  • 4. [SWPU2019]伟大的侦探
  • 5. [MRCTF2020]你能看懂音符吗
  • 6. 我吃三明治
  • 7. [ACTF新生赛2020]NTFS数据流
  • 8. [SWPU2019]你有没有好好看网课?
  • 9. sqltest
  • 10. [UTCTF2020]docx
  • 11. john-in-the-middle
  • 12. [ACTF新生赛2020]swp
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档