目录

buuctf 刷题笔记

[BJDCTF 2nd]TARGZ-y1ng

题目

https://buuoj.cn/challenges#[BJDCTF%202nd]TARGZ-y1ng
[BJDCTF 2nd]TARGZ-y1ng
1
哎? 我的tar zxvf怎么不好使了?
解压密码不需要爆破
得到的 flag 建议用 flag{} 包上提交。

分析

010 Editor 打开发现是 zip ,密码确实没能爆破出来。猜想密码是文件名,经过验证是正确的。解了几层发现是无限套娃,写点py解决。

解决

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import zipfile
from typing import Optional

first = zipfile.ZipFile("hW1ES89jF.tar.gz")


def find_password(file: zipfile.ZipFile) -> str:
    return file.filename.split('.')[0]


def extract_to_next(file: zipfile.ZipFile) -> Optional[zipfile.ZipFile]:
    if len(file.filelist) != 1:
        return None
    next_file = file.filelist[0]
    file.setpassword(find_password(file).encode())
    file.extract(next_file.filename)
    return zipfile.ZipFile(next_file.filename)


if __name__ == '__main__':
    next_zip = extract_to_next(first)
    while next_zip:
        print(next_zip.filename)
        next_zip = extract_to_next(next_zip)

可解出flag为

BJD{wow_you_can_rea11y_dance}