Whoo! This was a fun challenge with loads to learn. :)
The given code level11.c
checks whether the two inputs (as argv[1]
and argv[2]
) both MD5 hash to the same value or not. If they do, it uses both inputs as brainfuck code, and executes them. Then it checks if the outputs differ. Upon differing outputs, they are checked against the strings "io.sts Rules!"
and "io.sts Sucks!"
. If prog1's output is the first, and prog2's output is the second, we are granted shell.