Estoy hablando del tipo de explotaciones que compilas y que dan como resultado un ejecutable que explota un demonio (y no pasando una entrada especialmente diseñada a través de campos de entrada humanos).
Lo hacen pasando una entrada especialmente diseñada a través de campos de entrada no humanos. Un programa que hace algo útil necesita interactuar con otros programas de alguna manera, ya sea a través de protocolos de red, a través de protocolos de comunicación entre procesos, leyendo y escribiendo archivos, etc. El programa malicioso utiliza cualquier método de interacción que el demonio usa y lo envía especialmente entrada hecha a mano. Como es el caso con la entrada de humanos, el demonio analiza la entrada. Debido al error en el demonio que hace posible la explotación (la vulnerabilidad), esta entrada no se procesa correctamente, sino que conduce a la ejecución de la carga útil (el código "útil" contenido en la explotación).
Si lo piensas, los campos de entrada humanos pasan por programas intermedios. Cuando explota una aplicación web, por ejemplo, la vulnerabilidad se entrega a través de la capa de red del sistema operativo remoto, al servidor web, a la aplicación. Los exploits casi nunca son entregados por un humano escribiendo en un teclado, e incluso si lo son, el exploit se entrega a través del controlador del teclado del sistema operativo, al subsistema GUI, si existe, y así sucesivamente.