Return-Oriented Programming (ROP)
An exploitation technique that chains together small fragments of a program's existing code, called gadgets, to perform arbitrary actions. It sidesteps protections that block injected shellcode by reusing code the program already contains.