Buffer overflows (see video example)
Overwriting buffer of memory. Spills over into other memory areas.
Developers need to perform bounds checking. The attackers spend a lot of time looking for openings.
Not a simple exploit. Takes time to avoid crashing things. Takes time to make it do what you want.
A really useful buffer overflow is repeatable. Which means that a system can be compromised.