Exploits are generally attack tools used to penetrate software over the network. Some exploits are used locally on a system to gain privilege escalation. In either case, software exploits are unique because they exercise software in a way that was not designed or intended. The result is that the software grants access or features that were not part of original design. In most cases, exploits describe some sort of remote access capability. The term "shellcode" describes an exploit that grants full remote control access to a system. The term denial of service exploit describes a lesser form of exploit that can be used to crash or overload a system.