Security in this day and age is a necessity for everyone. No one can afford to be negligent any more. Personal or corporate information can very easily be acquired if the infrastructure is not secure and the days of just having up-to-date antivirus software are long gone. There are various types of vulnerabilities where a number of vectors of attack are available which are constantly being exploited by attackers. Multiple layers of security are required to deter unwanted guests. This paper attempts to explain one type of vulnerability known as buffer overflows. Various articles, papers, books, etc. have been released over the years related to buffer overflows on what they are and how to deal with them. The four main chapters of this paper will explain buffer overflows in the Microsoft Windows™ environment in depth. We start out with the basic foundations on understanding buffer overflows, then move on to how to exploit vulnerable software and then prevent attacks from being successful. Finally we mention ways to bypass prevention mechanisms already in place.