6 private links
This is for people who want to understand how programs get loaded under linux. In particular it talks about dynamically loaded x86 ELF files. The information you learn will let you understand how to debug problems that occur in your program before main starts up.
If you look at /usr/lib/libc.so; the "library" that gets linked when you specify -lc, it is not a library as such, but a link script which specifies the libraries to link, which also includes the dynamic linker itself:
Returning to libc is a method of exploiting a buffer overflow on a system that has a non-executable stack, it is very
similar to a standard buffer overflow, in that the return address is changed to point at a new location that we can
control. However since no executable code is allowed on the stack we can't just tag in shellcode.