Delulu [pwn]
Last updated
Last updated
Recognition protocol initiated. Please present your face for scanning.
We start by downloading the source files.
We are given a binary
delulu. Opening it with ghidra we can find a few interesting lines:
The function
delulu prints the flag, so we need to set local_48 to 0x1337beef. Unfortunately we can't directly set this value, but looking at this code we find a printf statement that prints the user input. This is a format string vulnerability, so we can use this to write the value 0x1337beef to the address of local_48.
You can find more information about format string exploits here.
Let's build our payload step by step:
This returns our 8th argument in the stack, which is our 8 A's. (We can use
gdb to make debugging easier.)
This writes 8 to the 7th argument in the stack, which is
local_48.
We need to write 0x1337beef, so we need to write 0x1337beef characters before the %7$n. This is 322420463 characters in decimal.
We can do this with the folowing payload:
Connecting to the server and providing this input gives us the flag after 'some' time: