I'm talking about the type of exploits that you compile and that result in an executable that exploits a daemon (and not by passing specially crafted input through human input fields).
They do so by passing specially crafted input through non-human input fields. A program that does something useful needs to interact with some other programs in some fashion, be it through network protocols, through interprocess communication protocols, by reading and writing files, etc. The malicious program uses whatever interaction method the demon uses and sends it specially crafted input. As is the case with input from humans, the demon parses the input. Due to the bug in the demon that makes the exploit possible (the vulnerability), this input is not processed correctly, but instead leads to executing the payload (the “useful” code contained in the exploit).
If you think about it, human input fields go through intermediate programs. When you exploit a web application, for example, the exploit is delivered through the remote operating system's network layer, to the web server, to the application. Exploits are hardly ever delivered by a human typing at a keyboard, and even if they are, the exploit is delivered through the operating system's keyboard driver, to the GUI subsystem if there is one, and so on.