Writeup by hgarrereyn
- Reverse Engineering
- 20 points
- Description: This program just prints a flag in raw form. All we need to do is convert the output to hex and we have it! CLI yourself to /problems/963285fb64e4c5f7a31b5a601c704f99 and turn that Raw2Hex!
In this directory, we find a binary
raw2hex that prints out the raw flag:
$ ./raw2hex The flag is:??~Y?މJ?B>?
We need to convert this output to it's hexadecimal representation and submit that as the flag.
We can solve this with another python one-liner:
$ ./raw2hex | python -c "a = raw_input(); print(''.join([hex(ord(x))[2:] for x in a[12:]]))" e519e7aa7e593fde891bd24aaa423ea4
Building the python one-liner
a = raw_input() # gets the output of raw2hex a[12:] # the output without the leading 'The flag is:' [ord(x) for x in a[12:]] # creates a list of the integer values for each character in the flag [hex(ord(x))[2:] for x in a[12:]] # convert those integers to hex values and strip off '0x' ''.join([hex(ord(x))[2:] for x in a[12:]]) # turn the list back into a string with no gaps print(''.join([hex(ord(x))[2:] for x in a[12:]])) # Print it out