Wow, thanks for the fantastic explanations! This is truly superb, thanks!!! I am moderately familiar with SSH and the command line but for some reason an SSH session doesn't feel like I am "owning" the machine. I suppose I am so used to the GUI's nowadays...
In regards to compiling an exploit, let's assume I want to do it on the target machine but gcc is not on it. Would I bring my own gcc to the party? I actually tried this, downloaded gcc on my machine, FTPed it onto the target, then ran SSH and made sure (chmod) I had RWX on both gcc & the exploit. Despite all that, gcc refused to run. Are there different gcc versions? Would I have to find the proper gcc for my target?