session:solution:12
                This is an old revision of the document!
Table of Contents
Session 12 Solutions
Gadget Tut
TODO
Echo Service
By going through the echo_service.c file we see that in the echo_service() function we use read() for reading 4096 bytes when we only have 1024 available for a the buf buffer. We can use this to create a return-oriented programming (ROP) attack.
Let's first consider our steps.
- We will create a payload that overflows thebufbuffer and rewrites the return address of theecho_service()function triggering the attack (the ROP chain).
- We will update the payload issue the following calls through the ROP chain, as also indicated in the task:- dup2(sockfd, 1);
- dup2(sockfd, 0);
- system(“/bin/sh”);
 
- We will start the server and then we will usenetcatto send the payload to the server to trigger the attack.
We aim for the stack to be the one below:
0x00000000 ... start address of buf ... +--------------------------------+ | dup2() address | <--- return address for echo_service() +--------------------------------+ | pop_pop_ret gadget address | +--------------------------------+ | 4 | +--------------------------------+ | 1 | +--------------------------------+ | dup2() address | +--------------------------------+ | pop_pop_ret gadget address | +--------------------------------+ | 4 | +--------------------------------+ | 0 | +--------------------------------+ | system() address | +--------------------------------+ | junk | +--------------------------------+ | "/bin/sh" address | +--------------------------------+ ... 0xFFFFFFFF
session/solution/12.1437654050.txt.gz · Last modified:  (external edit)
                
                