☰
BugKu——薛定谔的猫
2026/9/28 18:07:14 网站建设 项目流程

一、题目

二、方法

  • 下载得到一个压缩包,解压后得到一个txt文件,打开文件,说猫跑了。
  • 将文件拖入随波逐流,没发现异常。
  • 用WinHex打开文件,也没发现异常。
  • 看提示,一定要打开盒子吗?这盒子是指压缩包吧。
  • 用winrar打开压缩包预览,发现python代码。
    • #!/usr/bin/env python3 import base64, zipfile, io, getpass, sys, os # ===== 以下两行会被 make.py 替换成真实 base64 字符串 ===== RIGHT_BYTES = base64.b64decode('UEsDBBQAAAAIAO9MT1uflBVYMwAAADQAAAAIAAAAZmxhZy50eHQNx0EOgCAMBMCnbhYspQHcxHIz/F3nNm3S39SyHcsSmyNuB1Ee40AkOFP/XbpQu6La+QBQSwECFAAUAAAACADvTE9bn5QVWDMAAAA0AAAACAAAAAAAAAAAAAAAtoEAAAAAZmxhZy50eHRQSwUGAAAAAAEAAQA2AAAAWQAAAAAA') WRONG_BYTES = base64.b64decode('UEsDBBQAAAAIAOJRT1tclFOiJQAAADAAAAAIAAAAZmxhZy50eHR7snfBi+VNT9fPf7Kr7XnP6vd7eoDks20dT5dsBIq83zMfDQEAUEsBAhQAFAAAAAgA4lFPW1yUU6IlAAAAMAAAAAgAAAAAAAAAAAAAALaBAAAAAGZsYWcudHh0UEsFBgAAAAABAAEANgAAAEsAAAAAAA==') # ========================================================== def extract(data): with zipfile.ZipFile(io.BytesIO(data)) as z: z.extractall() # 内存解压到当前目录 print('\n>>> 解压完成,文件列表:') for name in z.namelist(): print(' ', name) def main(): pwd = getpass.getpass('请输入解压密码:') if pwd.strip() == '': extract(RIGHT_BYTES) else: extract(WRONG_BYTES) if __name__ == '__main__': try: main() except KeyboardInterrupt: sys.exit(1)
  • 大致意思是:
    • 内置了两个 ZIP 压缩包(用 base64 编码藏在代码里),每个包里都有一个flag.txt:

      • RIGHT_BYTES→ 真 flag

      • WRONG_BYTES→ 假 flag

    • 弹出一个密码输入框:请输入解压密码:

    • 根据输入决定解压哪个:

      • 直接回车(空密码)→ 解压RIGHT_BYTES,得到真 flag

      • 输入任何非空内容→ 解压WRONG_BYTES,得到假 flag

    • 把 ZIP 解压到当前目录,并打印出解压出来的文件列表。

  • 把python代码复制下来执行,不输入密码,直接回车,得到flag。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询