Exploit

An exploit is a piece of software, a chunk of data, or sequence of commands that take advantage of a bug, glitch or vulnerability in order to cause unintended or unanticipated behavior to occur on computer software or hardware. This frequently includes such things as gaining control of a computer system or allowing privilege escalation or a denial of service attack.

Classification
There are several methods of classifying exploits. The most common is by how the exploit contacts the software.


 * A remote exploit works over a network and exploits the security vulnerability without any prior access to the targeted system.
 * A local exploit requires prior access to the targeted system and usually increases the privileges of the person running the exploit past those granted by the system administrator.

Exploits against client applications also exist, usually consisting of modified servers that send an exploit if accessed with the client application. Exploits against client applications may also require some interaction with the user and thus may be used in combination with a social engineering method.

Another classification is by the action against vulnerable system: unauthorized data access, arbitrary code execution, or denial of service.

Many exploits are designed to provide superuser-level access to a computer system. However, it is also possible to use several exploits, first to gain low-level access, then to escalate privileges repeatedly until one reaches the root.

Normally a single exploit can only take advantage of a specific software vulnerability. Often, when an exploit is published, the vulnerability is fixed through a patch and the exploit becomes obsolete for newer versions of the software. This is the reason why some blackhat hackers do not publish their exploits but keep them to themselves or other crackers. Such exploits are referred to as 'zero day exploits. To obtain access to such exploits is the primary desire of many unskilled attackers, often nicknamed script kiddies.