攻防世界 - Misc - Level 3 | Miscellaneous-300

🌟 关注这个靶场的其它相关笔记:CTF 靶场笔记 —— 攻防世界(XCTF)· 过关思路合集

0x01:考点速览

本关考察的是 MISC 中的音频隐写相关的内容,通过此关,你可以学习到以下知识点:

  • ZIP 递归破解脚本 Python 编写。

  • ZIP 文件密钥爆破工具 ARCHDR 的使用,以下是 CTF 推荐的爆破流程:

    • 设置长度 4-6 位(可以浮动,但不用太长,过长的一般不会出现在 CTF 中)。

    • 纯数字爆破。

    • 大小写字母爆破。

    • 混合符号爆破。

  • Audacity 查看音频 “频谱图”。

0x02:Write UP

将附件从靶场中下载下来,尝试使用 BandZip 解压缩发现需要密码,此时可以注意到压缩包里同样也是一个压缩包,且名字为数字,我们尝试将这个内部压缩包的文件名当作密码输入,即可解压缩:

破解完成后会发现,46783.zip 内又嵌套了一个压缩包同样为数字,同样也可以通过压缩包名字解压:

此时,你应该察觉到不对了。天知道它里面有多少层压缩包,So,我们必须编写一个脚本来自动解压,笔者编写的脚本如下:

 """
   @ ScriptName : ZIP 递归解压脚本
   @ Description : 当碰到 ZIP 文件下又是 ZIP 文件且不知道嵌套多少层时,可以通过该脚本进行递归解压。本脚本属于一个模板,可以根据需求自由修改
   ZipFile 操作压缩文件参考:https://blog.csdn.net/magicboom/article/details/90046901
 """
 import zipfile, os
 ​
 file_path = "f932f55b83fa493ab024390071020088.zip"
 ​
 # 计数器
 count = 1
 # 递归解压文件
 while True:
   # 读取 file_path 指定的 zip 文件
   zip_file = zipfile.ZipFile(file_path, "r")
 ​
   next_file_name = "" # 下一个文件名
   for file in zip_file.namelist():
     # 解压文件,设置解压密码为文件的名称
     zip_file.extract(file, pwd=file.split(".")[0].encode())
     next_file_name = file
 ​
   zip_file.close() # 必须要调用的
 ​
   # 打印提示信息
   print(f"[ {count} ] File {file_path} 解压完毕 => Password:{next_file_name.split('.')[0]} => Result File: {next_file_name}")
   # 删除已经被解压的压缩文件
   os.remove(file_path)
   # 赋值下一个待解压的压缩文件的地址
   file_path = next_file_name
   count += 1

运行脚本,大约解压了 1520 次后,程序会报错,因为此时无法使用下一个文件的名字作为密码进行解压了:

但是解压还需要密码,所以,此时我们就需要借助 ARCHPR 这款工具尝试爆破密码了,设置密码口令长度 4-6 位,并勾选测试范围为所有数字与小写字母,开始爆破:

使用解压密码 b0yzz 进行解压会得到一份音频文件,我们将其丢到 Audacity 里,切换视图为 “频谱图” 即可看到 Flag:

 BallsRealBolls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue17 :: Hack3rX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值