This school CTF had a good set of challenges for beginners
pwn1
32-bit executable, dynamically linked, not stripped
When you run the executable in the terminal, the program simple asks for an input and checks whether it is the secret it is looking for or not.
debugging in GDB…
1 | gdb-peda$ checksec |
Going through the assembly code, we can see that see a gets() function. This gives us a chance to corrupt any stack address higher than the stack address where the gets() is to read into. We can also see a call to ‘print_flag’ function. This call instruction is executed only after a cmp instruction which compares [ebp-0xc] with ‘0xf007ba11’.
1 | 0x0804861d <+107>: cmp DWORD PTR [ebp-0xc],0xf007ba11 |