Can you get the flag? Reverse engineer this binary.
Solution
The challenge strongly hints (it's in the binary name, challenge name, and is a literal hint) that this is a binary packed with UPX. Additionally, running strings unpackme-upx | grep upx displays Info: This file is packed with the UPX executable packer http://upx.sf.net $. According to their website, "UPX is a free, portable, extendable, high-performance executable packer for several executable formats."
We can download the latest release of UPX from the GitHub releases page. Extracting the archive gives us a folder with a upx binary. We can run ./upx -d unpackme-upx to decompress the binary and replace it on disk. Now, our unpackme-upx file is unpacked.
Next, run gdb ./unpackme-upx and layout asm (or disassemble main) to get:
We know that the program asks for a number and then will probably print the flag given the correct number. So, we are looking for a cmp instruction. We see <+133>: cmp $0xb83cb,%eax. Converting b83cb from hexadecimal to decimal yields 754635.
Running the program and entering 754635 prints out the flag.
Note that without decompressing using upx, gdb would have been unable to display any assembly.