Example #1
0
ssize_t recv(int sockfd, void *buf, size_t len, int flags)
{
	ssize_t (*orig_recv)(int sockfd, void *buf, size_t len, int flags);
        orig_recv = dlsym(RTLD_NEXT, "recv");
	ssize_t (*orig_send)(int sockfd, const void *buf, size_t len, int flags);
        orig_send = dlsym(RTLD_NEXT, "send");
	
	ssize_t r = orig_recv(sockfd, buf, len, flags);
	printf("READ %d %s\n", r, buf);
	if (strstr(buf, "what would you like")) {
		len = 100;
		//printf("requesting 2nd lin\n");
		//ssize_t r = orig_recv(sockfd, buf, len, flags);
		//printf("READx2 %d %s\n", r, buf);

		printf("REQUESTING KEY \n");
		ssize_t x = orig_send(sockfd, msg, strlen(msg), flags);
		r = orig_recv(sockfd, buf, len, flags);
		printf("read challenge %d %s\n", r, buf);
		char *xc = buf + 11;
		memcpy(mem, xc, 5);

		printf ("chal = '%s'\n", mem);

		r = orig_recv(sockfd, buf, len, flags);
		printf("read 'answer?' %d %s\n", r, buf);

		chal = 0x8048EAB;
		*(int *)0x804B04C=7;

		chal(mem, chalres);
		chal2 = 0x8048F67;
		chal2(chalres);
		strcat(chalres, "\n");
		printf ("sending response\n");
		x = orig_send(sockfd, chalres, strlen(chalres), flags);
		printf ("receiving again");
		r = orig_recv(sockfd, buf, len, flags);
		printf("read flag  %d: %s\n", r, buf);

		exit(0);	
	
	}
	return r;
}
Example #2
0
INTERPOSE (send, ssize_t, int sockfd, const void *buf, size_t len, int flags)
{
  CHECK_INTERPOSE (send);

  if (!is_our_fd (sockfd))
    return orig_send (sockfd, buf, len, flags);


  return v4v_send (sockfd, buf, len, flags);
}
Example #3
0
ssize_t send(int sockfd, const void *buf, size_t len, int flags)
{
	ssize_t (*orig_send)(int sockfd, const void *buf, size_t len, int flags);
        orig_send = dlsym(RTLD_NEXT, "send");
	printf("LEN=%d\n", len);
	ssize_t r = orig_send(sockfd, buf, len, flags);
	printf("SEND %d %s\n", r, buf);
	return r;

}