Rating: 5.0

## TLDR:
- since we can include an arbitrary number of files, we can find a set of 256 `sha256` hashes which are a basis for \\(\mathbb{Z}_2^{256}\\).
- change the python files in a way that it runs system and prints the flag.
- compute the hash of the new zip, \\(h_{new}\\), and find which set of files \\(I\\) of the basis to include in order that \\(h_{new} \oplus \bigoplus_{i\in I} sha256(i) = h_{orig}\\). This will pass the check for validity and get your flag.

Original writeup (https://sectt.github.io/writeups/34C3CTF/crypto_182_software_update/Readme).