2021年江西省网络安全大赛初赛MISC:extractall(循环解压+斐波那契脑洞)

Posted Zeker62

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年江西省网络安全大赛初赛MISC:extractall(循环解压+斐波那契脑洞)相关的知识,希望对你有一定的参考价值。

解题思路

在附件里面的文件长这样:
首先点开hint.txt
发现,直接告诉了解压包密码是前一个解压包的名字。
(这句话用南昌话说更带味)
解压之后,发现还是有压缩包,于是这可能就是杂项固定的套路之一——循环解压
但是在解压之前,要思考,题目的名字是什么意思?
百度一下,发现,extractall是python解压库里面的一个函数名:extractall是一个函数,能够解压文件,传入路径,文件名和密码就能使用
但是遇到的错误是,密码必须经过编码,也就是后面需要加上一个encode()
因为python3不自动支持ascii码了,extractall要求输入的是字节类型

所以使用脚本:

import zipfile

name = '[REFTQ.zip'
for i in range(100):
    f = zipfile.ZipFile(name , 'r')
    f.extractall(pwd=name[:-4].encode())
    name = f.filelist[0].filename
    print(name[:-4],end="")
    f.close()


可以明显,看出,在解压名后面有个==,很可能是base64编码
尝试进行解码:
可以解码一部分,那肯定有一些是多余的,我们要去掉
暂且先放在这
解压后可以得到flag.txt文件,以及一张图片
打开flag.txt,可知答案不在这里
打开图片extractall.png
下面一半很显然被截取
使用winhex对图片的高进行加长:
在winhex中,从第16位开始,每4位就是图片的宽和高的值
直接把1改成2,如图

得到内容:
它是哪个?识图一下:
斐波那契。
斐波那契数列是1、1、2、3、5、8、13、21,刚刚好到21
联想到之前的base64解码,我们的第一,第二,和第21的码都可以解出来,唯独中间的码不能解,猜想,可能需要按照斐波那契数列提取编码
按照斐波那契提取出来后,进行解码,得到了flag

总结

问题方法
脚本写不出来尝试回归题目寻找信息,上面使用extractall可能就是需要搜索这个信息的
base64解码遇到乱码如果是部分解码成功,那肯定在编码中需要增加或者删去什么,部分解码成功的编码要多加思考,找到规律
png隐写最一般的是隐写长宽,然后还有像素、二维码、lsb、两图片合成、binwalk等等

这题脑洞比较大吧

以上是关于2021年江西省网络安全大赛初赛MISC:extractall(循环解压+斐波那契脑洞)的主要内容,如果未能解决你的问题,请参考以下文章

第四届江西省高校网络安全技能大赛初赛部分Writeup

第四届江西省高校网络安全技能大赛初赛部分Writeup

2021年职业院校技能大赛“网络安全”项目江西省A模块

2021年江西工业互联网安全技术技能大赛Writeup

2021年江西工业互联网安全技术技能大赛线下决赛部分Writeup

2021年江西工业互联网安全技术技能大赛线下决赛部分Writeup