Reversing this program is made frustrating by the fact that it was written in OCaml, generating many instructions that maintain internal structures, check stack alignment, etc. It becomes clear that in order to get the flag, we must pass the checks performed by each function within a list.
It is clear the binary has been messed with, and from both the description and name of the task, we hypothesize that bytes have only been shuffled around, not otherwise modified (via encryption, XOR, etc.).
If you know of a link we have missed, please let us know in the comments and we will add it shortly.
We had a great time solving a few problems from the Ghost in the Shellcode CTF this past weekend and wanted to have an easy place with links to write-ups from all around the Internet, so we created it here. If you know of a link we have missed, please let us know in the comments and we will add it shortly.