The ELF binary did an XOR decryption of the actual flag in memory (with a key in the binary) and then compared it to the user input.
We could do that xoring ourselves and get the flag. (Get flag with strings and see key when reversing with eg. ghidra)
** ↓ Actual writeup below ↓ **