I'd like to know why we have to put the shellcode before the return address in a buffer overflow. Logically the return address will point to the shellcode and will be executed. So, the return address should be put before the shellcode.
I read about it here : buffer overflow exploits - Why is the shellcode put before the return address.
But, I didn't really understand. Can someone explain me.