This is a comment by Shane Wilton in this post from HH Information Security.
Start with MicroCorruption to familiarize yourself with reverse engineering and exploit development. It's ~18 challenges, entirely on the website, that task you with reverse engineering MSP-430 programs, and developing exploits against them.
From there, Pwnable.kr has another few dozen exploitation challenges. These are more real-world, but ramp up in difficulty quickly. The first block should be doable by anyone with Linux experience though.
If you're starting from the very beginning, keep Hacking: The Art of Exploitation nearby. It's a very good primer for all of this stuff. Once you work your way through that, TAOCP is considered a bible of sorts for vulnerabilities. It hasn't aged a day since 2006, and will teach you, in intimate detail, how memory corruption vulnerabilities work, and how to exploit them.
For a more general set of resources, here's a reading list put together by tptacek (Creator of Matasano Security and MicroCorruption). On that list Cryptography Engineering: Design Principles and Practical Applications is a favourite of mine, and is an incredible introduction to cryptography, for software engineers.
- www.microcorruption.com
- www.pwnable.kr
- http://www.amazon.com/Hacking-The-Art-Exploitation-Edition/dp/1593271441
- http://www.amazon.com/The-Software-Security-Assessment-Vulnerabilities/dp/0321444426
- http://www.amazon.com/lm/R2EN4JTQOCHNBA
- http://www.amazon.com/Cryptography-Engineering-Principles-Practical-Applications/dp/0470474246