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

BUUCTF通关之路 - Misc Part 7

原创
作者头像
OwenW
修改2025-09-01 20:09:08
修改2025-09-01 20:09:08
19800
代码可运行
举报
文章被收录于专栏:BUUCTF通关之路BUUCTF通关之路
运行总次数:0
代码可运行

直接上题,今天也是给大家带来新的12道Misc题目的解析,感谢大家观看。


1. GXYCTF2019SXMgdGhpcyBiYXNlPw==

这次先看题目,这是一个base64的编码,并且通过CyberChef可以得到原文是“Is this base?”。

题目好像想要提醒我们是base64编码。下载题目文件,文本文件内容每一行都像base64的编码格式。

这让我快速想到了之前遇到的一题,是base64隐写。没有看过的可以去看看我之前写的Part 5中的第七题。这里一行行类似base64的编码非常像base64隐写后的密文。我们尝试用脚本解密,和之前的脚本一样,把密文放进同目录的input.txt中然后运行。

代码语言:python
代码运行次数:0
运行
复制
import base64
 
#coding=utf-8
 
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
 
#文件路径
with open('input.txt', 'rb') as f:    
    flag = ''
    bin_str = ''
    for line in f.readlines():
        stegb64 = str(line, 'utf-8').strip('\n')
        rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), 'utf-8').strip('\n')
        offset = abs(base64chars.index(stegb64.replace('=', '')[-1]) - base64chars.index(rowb64.replace('=', '')[-1]))
        equalnum = stegb64.count('=')  # no equalnum no offset
        if equalnum:
            bin_str += bin(offset)[2:].zfill(equalnum * 2)
        res = [chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]
    print(res)

运行后的结果连接在一起就是答案。

类型

base64隐写

工具

CyberChef、Python

Flag

flag{fazhazhenhaoting}

2. 间谍启示录

下载题目文件,是一个iso文件,一种光盘镜像文件,这种文件可以直接通过解压缩软件打开。这里我们也是直接用本地得Bandizip打开了。

这里全部解压缩到本地,然后开始具体看每一个文件,由于很多文件是隐藏的,需要打开隐藏文件的可见开关。不同版本的windows打开隐藏文件可见开关的方式不同,可以上网搜一下。经过一段时间查看,发现基本上除了这个“systenzx”的可执行文件外,要么是空白,要么是信息很少。所以我们重点分析这个exe文件,这里我也是直接运行了文件,发现该文件运行后在同目录下创建了新的两个文件。

这里就发现一个奇怪的地方,虽然我没有在电脑上设置阻止exe运行的安全防护,但是当exe写文件到某个目录时应该会进行询问(大部分个人电脑在不经过特殊设置时都会对写文件操作进行询问,就是一个小弹窗)。这里的写操作没有触发预警,大概率是说明该行为不是一个敏感的写操作,而是一个常规文件移动操作比如解压缩。这里可以进行验证,把该exe放进010editor,可以找到一个关键词,“WINRAR.SFX”。

这个SFX就是WinRAR中的自解压文件服务,它会把压缩文件包装成一个exe文件,并会在双击后自动解压,也可以只选择解压其中一部分文件。这里用压缩文件工具打开后果然发现还有一个文件没有解压。这里把它提取出来,运行后就会在本地出现一个新的文本文件,“机密文件.txt”,其中的内容就是答案。

类型

取证、WinRAR压缩文件特性

工具

Bandizip、010editor

Flag

flag{379:7b758:g7dfe7f19:9464f:4g9231}

3. 小易的U盘

这道题文件下载下来也是一个iso文件,一开始以为和上面那道题一样的套路,结果发现不是。这里也是用Bandizip打开iso文件,发现内含多个exe可执行文件以及其它杂七杂八的文件。

这里尝试用压缩文件工具打开exe,发现这回是真的可执行文件。但是数量太多了,不清楚从哪个开始看。往下看发现一个自动运行脚本,打开脚本,内容如下。

代码语言:txt
复制
[AutoRun]
Open=autoflag - 副本 (32)

这说明我们需要分析副本32,把副本放进kali中准备先进行基本的信息收集,结果在用strings输出可打印字符时发现答案就在其中。

类型

取证、文件隐写

工具

Bandizip、strings

Flag

flag{29a0vkrlek3eu10ue89yug9y4r0wdu10}

4. [WUSTCTF2020]爬

下载题目文件,发现没有任何文件后缀名,放进kali中用exiftool查看一下文件类型,发现是个PDF文件。

把后缀名改为pdf并打开,发现有个提示,说flag在图片下。

这里最简单的办法就是把pdf转换为word形式然后把上层图片删除。这里用word直接打开pdf文件,它会自动把目标转换为doc文件,删除图片后出现了一行十六进制的编码。

代码语言:txt
复制
0x77637466323032307b746831735f31735f405f7064665f616e645f7930755f63616e5f7573655f70686f7430736830707d

放到CyberChef上解码就是答案。

类型

文件隐写、字符编码

工具

exiftool、CyberChef

Flag

flag{th1s_1s_@_pdf_and_y0u_can_use_phot0sh0p}

5. 喵喵喵

题目文字中提示了“喵喵喵,扫一扫”,应该是有个二维码需要扫。先下载题目文件,是只小猫的图片。先放进随波逐流工具看看有没有什么信息。发现工具上提示LSB存在数据,一般LSB输出是没有数据的,并且这里BGR的位平面顺序下的数据有PNG的标识。位平面顺序就是指读的R、G、B的顺序,就像三个词语不同的顺序有不同的意思一样,不同位平面的顺序会有不一样的输出。

这里用stegsolve打开并选择data extract,调整LSB通道并输出结果为PNG文件,注意这里“Bit Plane Order”必须选择BGR。

这里也可以发现这个文件头还不是一个标准的PNG文件,而是多了一个“FF FE”。下载后无法打开文件,需要用010editor或者winhex把前面的“FF FE”删除并保存。

修改后的文件
修改后的文件

打开该PNG文件后发现是半个二维码,这和题目提示的“扫一扫”对上了,说明我们的方向是正确的。这里半个二维码应该是被修改了高度,可以放进随波逐流工具中自动爆破。这里也是直接爆破到了原图高度并输出了原图。我们用qr_research扫描该二维码,出现一个百度网盘地址。

工具爆破高度过程
工具爆破高度过程
扫码结果
扫码结果

该链接指向一个rar的压缩文件,这里下载下来并尝试解压缩。解压缩的时候出现了一个报错,“当前不支持rar4固态存档”,暂时没理这个报错,想着先看一下解压缩出来的文件。可惜其中的文本文件什么都没有。

代码语言:txt
复制
flag不在这里哦  你猜猜flag在哪里呢?  找找看吧

这里想到也许是NTFS的备用数据流隐写,前面几篇我们已经遇到两次了,也是rar压缩里面一个文本文件的形式。这里尝试用AlternateStreamView查看,结果什么都没有。这里花了挺多时间想,也尝试用了别的工具结果也没用,总不能这个压缩文件真的什么都没有,那就太折磨人了。这里突然想到之前解压缩有个报错,“当前不支持rar4固态存档”,这个报错会不会导致原本的备用数据流损坏呢。所以就开始解决这个报错,最后发现好像和压缩工具有关,这个报错只能用WinRAR解压缩,这里下载了WinRAR然后解压缩后终于发现了备用数据流。

pyc是python编译后的二进制文件,直接打开不可读。这里需要用另外一个工具导出该文件,这里是使用NtfsStreamsEditor 2,之前我没找到官方下载链接,是在这个论坛上下载的。类似的操作,把该pyc文件进行导出。

该文件需要进行反编译才能看得懂,这里用一个在线工具,以下是反编译结果。

代码语言:python
代码运行次数:0
运行
复制
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7


import base64


def encode():
    flag = "*************"
    ciphertext = []
    for i in range(len(flag)):
        s = chr(i ^ ord(flag[i]))
        if i % 2 == 0:
            s = ord(s) + 10
        else:
            s = ord(s) - 10
        ciphertext.append(str(s))
    return ciphertext[::-1]


ciphertext = [
    "96",
    "65",
    "93",
    "123",
    "91",
    "97",
    "22",
    "93",
    "70",
    "102",
    "94",
    "132",
    "46",
    "112",
    "64",
    "97",
    "88",
    "80",
    "82",
    "137",
    "90",
    "109",
    "99",
    "112",
]

还没完,这是encode也就是加密的过程,我们需要解密,也就是需要把过程逆过来得到原本的flag。这里也懒得写了,直接扔给deepseek,让它写一个逆运算,这是它写的,运行之后就是答案。

代码语言:python
代码运行次数:0
运行
复制
ciphertext = [
    "96", "65", "93", "123", "91", "97", "22", "93", "70", "102", "94", "132",
    "46", "112", "64", "97", "88", "80", "82", "137", "90", "109", "99", "112"
]

# 反转ciphertext以得到原始编码顺序
reversed_ct = ciphertext[::-1]
flag_chars = []

for j in range(len(reversed_ct)):
    num = int(reversed_ct[j])
    if j % 2 == 0:
        s_val = num - 10
    else:
        s_val = num + 10
    s_char = chr(s_val)
    flag_char = chr(j ^ ord(s_char))
    flag_chars.append(flag_char)

flag = ''.join(flag_chars)
print(flag)

类型

LSB图片隐写、文件修复、CRC校验、NTFS隐写、反编译、加密解密

工具

随波逐流工具、stegsolve、010editor、qr_research、AlternateStreamView、NtfsStreamsEditor 2、 python

Flag

flag{Y@e_Cl3veR_C1Ever!}

6. [RoarCTF2019]黄金6年

下载题目文件,是个MP3视频。放进kali中strings看一下可打印字符,发现末尾有一串base64的编码,这里把编码提取出来放进CyberChef发现是一个rar压缩文件。

把输出的压缩文件保存到本地,发现需要密码,尝试了一下爆破结果没有用,就想着回到视频中看有什么线索。上一篇Misc 6中我们也遇到过一个涉及mp3的题目,它把信息写在了视频其中几个帧上,所以这里也用同样方法看看有没有帧藏有隐藏信息。结果确实发现其中四个帧中有二维码。(这里其实有点波折,上一次用OpenShot发现很不清晰,所以这一次直接用的Kinovea,结果Kinovea不知道为何只能看见前三个二维码,一开始以为只有三个发现对不上,用回OpenShot时发现结尾还有一个二维码。)

全部扫码并按照顺序拼接在一起就是压缩文件的密码,解开压缩文件,答案就在其中。另外,这里二维码不是很清晰,用qr_search效果一般,我这里直接是用微信扫的。

代码语言:txt
复制
iwantplayctf

类型

视频隐写

工具

CyberChef、扫码工具、Kinovea、OpenShot

Flag

flag{CTF-from-RuMen-to-RuYuan}

7. [WUSTCTF2020]alison_likes_jojo

下载题目文件,其中包含一个压缩文件和一个文本文件,文本内容没啥用,压缩文件中有两个图片。

先看boki.jpg图片,把它放进随波主流工具,工具显示图片结尾标识后还有一个压缩文件,放进kali中用binwalk把结尾的压缩文件提取出来。

提取后发现该压缩文件需要解压密码。这里没有什么线索,尝试了分析另外一张图片也没有结果,只能爆破,最终用ARCHPR六位数字爆破得到了密码,密码是888866。

解压成功后发现其中的文本文件内是一个字符串,放进CyberChef发现是经过了三次base64的编码,解码后是“killerqueen”,杀手皇后,很符合题目。

这个字符串像是某个密码,这里首先想到可能是另外一张图片隐写的密码。这里没有什么好方法,把常见的jpg隐写都试一遍,JSteg、JPHide、OutGuess、F5都试试就差不多了。这里也是发现是outguess隐写。

类型

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

工具

随波逐流工具、binwalk、ARCHPR、CyberChef、outguess

Flag

flag{pretty_girl_alison_likes_jojo}

8. 从娃娃抓起

下载题目文件,是两个文本文件,我统一放在这里。

代码语言:txt
复制
题目描述.txt:
题目描述:伟人的一句话,标志着一个时代的开始。那句熟悉的话,改变了许多人的一生,
为中国三十年来计算机产业发展铺垫了道路。两种不同的汉字编码分别代表了汉字信息化道路上的两座伟大里程碑。
请将你得到的话转为md5提交,md5统一为32位小写。

从娃娃抓起.txt:
0086 1562 2535 5174
bnhn s wwy vffg vffg rrhy fhnv

请将你得到的这句话转为md5提交,md5统一为32位小写。
提交格式:flag{md5}

我们需要解这两个编码,并把结果合并转为md5。先看第一行,这是个范围在0000-9999的编码且上面提示是汉字信息化的里程碑,之前有接触过无线电,看到这里就想到是中文电码。可以在中文电码查询网站查看每个电码所代表的汉字,最后查询后第一行翻译为“人工智能”。

题目描述中提到这是“一句话”,前面是中文的“人工智能”,后面应该也跟着中文。但第二行显然不是什么汉字编码,更像是拼音,这里也是把手机上拓展键盘有的都尝试了一遍最后发现是五笔。用这个在线网站可以在线输入。

所以连起来就是“人工智能也要从娃娃抓起”,放进md5在线加密工具,32位小写结果就是答案。

类似

特殊字符编码

工具

在线工具

Flag

flag{3b4b5dccd2c008fe7e2664bd1bc19292}

9. [安洵杯 2019]吹着贝斯扫二维码

这道题属于是老题有新解法。先下载题目文件,压缩包中有密密麻麻的未知文件和一个加密的flag压缩包,压缩包中有一条评论,看起来像是某种编码后的密文,很可能解码后就是该压缩文件的密码。

代码语言:txt
复制
GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY

尝试放进CyberChef自动解码,发现第一步是需要base32解码,但后续的就无法识别了,可能是经过了多次编码。接下来看其它未知类型的文件,放进kali后发现可以直接以图片形式预览,随便选择一个并使用exiftool发现原格式是jpg图片。

在Windows上预览需要把图片后缀全部改为jpg,这里我是用wps的图片批量修改功能,没有现成工具也可以用CMD命令行工具输入下面的命令,该命令会把当前目录所有文件改为jpg后缀。

代码语言:txt
复制
for %i in (*.*) do ren "%i" "*.jpg

我们可以发现这是一个二维码被拆分成了很多小的碎片。现在需要做的就是拼图,这里总共有36张,其实并不多,有兴趣的可以直接试试。这里有一个自动拼图工具叫gaps,配置方面可以参考这篇文章。它不是一个拼图工具,而是图像修复工具,需要先组合图像,然后它会根据算法修复图像,最终呈现结果就是已经拼好的图。这里直接附上拼好的二维码图和扫码内容。

这道题目是个19年的题目,当时应该还没有这种通过算法自动解决的工具,这里也简单讲一下另外一个做法。把任意一张图片放进010editor后会发现末尾处存在一个数字标识,该标识就是图片的顺序,之后可以根据顺序拼接图片。这里可以用一个在线拼接的工具。最终的结果也是相同的。

得到这串内容后,就可以尝试解密,这里的编码顺序就是加密时的顺序,解密需要逆过来。当然这里存在一个小坑,中间的数字不全是指base,比如16是指16进制,13是指rot。放进CyberChef,前两个会自动识别,放入第三个ROT13后,后面的也会自动识别出来,最终得到压缩文件密码,ThisIsSecret!233,解压缩后答案就在其中。

类型

图片修复、字符编码

工具

Bandizip、exiftool、qr_research、CyberChef、010editor、gaps

Flag

flag{Qr_Is_MeAn1nGfuL}

10. 弱口令

下载文件,是个有密码的压缩包,题目说了是弱口令结果数字遍历字典都试了一遍没找到。结果发现压缩文件有注释,只是看上去是空白的一开始没在意。这里复制出来放进Notepad++,左上角选择显示符号。

发现这里的符号规律有点像是摩斯密码,每一行算是一个字母,连起来密文如下。

代码语言:txt
复制
.... . .-.. .-.. ----- ..-. --- .-. ..- --

放进CyberChef翻译一下,发现压缩文件密码。

解压后得到一张图片,放进随波逐流工具内发现LSB存在隐藏数据,但是这里任何一个位平面顺序下的输出都是乱码,说明可能是用了某个特定含有key的LSB隐写工具。

最后发现是这个项目,地址是(https://github.com/livz/cloacked-pixel)的LSB隐写方法,该项目最后一次更新是在八年前了,需要配置python2才可以运行,否则解密过程中可能出现环境问题。配置好项目后,使用下列命令输出答案,这里需要一个密码且前面没有任何提示信息,结合前面的标题“弱口令”,尝试了常见的弱口令后发现是123456。

代码语言:txt
复制
python2 .\lsb.py extract .\女神.png output.txt 123456

类型

字符编码、LSB隐写

工具

notepad++、CyberChef、随波逐流工具

Flag

flag{jsy09-wytg5-wius8}

11. [GUET-CTF2019]zips

先下载题目文件,需要解压密码,放进随波逐流工具没有什么特殊信息,开始爆破,用ARCHPR遍历六位数字密码,最后发现密码为723456。

打开后又有一个带有密码的压缩文件,直接放进随波逐流工具,工具显示为伪加密并直接输出修改后的非加密压缩文件,直接解压得到一个bash脚本和另外一个加密的压缩文件。

bash脚本内容如下,大概意思是flag.zip这个压缩文件的密码是当时压缩的时间戳。

代码语言:txt
复制
#!/bin/bash
#
zip -e --password=`python -c "print(__import__('time').time())"` flag.zip flag

这里我的想法是先通过exiftool看看该压缩文件的具体信息,因为上面一般带有时间信息。而且时间戳光整数位就有10个,直接爆破时间太长了,要想办法缩小这个范围。这里也是发现了两个时间,可惜转换为时间戳后都不对。

这里只能尝试爆破,虽然天数不统一但是月数一致,这里都是2019年5月的,所以我从这里入手,2019年5月的时间戳都是以155开头的,同时我在本地运行了一下这个bash命令,输出的小数都是两位的,所以我们现在需要爆破的目标是。

代码语言:txt
复制
155xxxxxxx.xx

在ARCHPR中选择掩码模式,按照我下面这个样子配置,稍等一会就能爆破出答案了,是1558080832.15,解压缩后答案就在其中。

类型

压缩文件密码爆破、伪加密

工具

ARCHPR、随波逐流工具、exiftool

Flag

flag{fkjabPqnLawhvuikfhgzyffj}

12. [UTCTF2020]file header

很简单的文件修复题目,下载题目文件,png后缀但是无法打开。题目提示文件头,把图片放进010editor发现缺少了PNG文件头。这里把前面的“00 00 00 00”改为“89 50 4E 47”并保存就修复完成了,答案写在图片上。

原图的文件头
原图的文件头
修改后的文件头
修改后的文件头

类型

文件修复

工具

010editor

Flag

flag{3lit3_h4ck3r}


大伙有没有发现,这一节好多老题,大部分时间都花在配置工具或者项目的环境上去了。但是这个坑必须填上,就当是训练自己查找资料的能力了。感谢大家支持。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. GXYCTF2019SXMgdGhpcyBiYXNlPw==
  • 2. 间谍启示录
  • 3. 小易的U盘
  • 4. [WUSTCTF2020]爬
  • 5. 喵喵喵
  • 6. [RoarCTF2019]黄金6年
  • 7. [WUSTCTF2020]alison_likes_jojo
  • 8. 从娃娃抓起
  • 9. [安洵杯 2019]吹着贝斯扫二维码
  • 10. 弱口令
  • 11. [GUET-CTF2019]zips
  • 12. [UTCTF2020]file header
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档