This is one of my favorite books, I got that book before I had taken any classes in assembly or C, but it definitely got me motivated for them. Covers a great deal of information to get one up to par, but even once the concepts of that book are mastered, you've only scratched the tip of the iceberg. He covers the method to bypass non executable stack by return to libc, but not randomized virtual address spacing. They do have articles at milw0rm for that though

. Not only is it jam packed with information, contains very good hacker philosophy of discovery and innovation. I would say a must to read for any beginner/novice hacker. also i say the network section when talking about sniffing data, he uses ancient software, still contains good background knowledge but instead of using his software use ettercap.