#include #include BOOL networkStackOverflow(char * buf){ char other_buf[100]; char *bufptr; WORD version; WSADATA wsaData; SOCKET listenSocket; SOCKET acceptSocket; SOCKADDR_IN service; version = MAKEWORD(2,2); memset(buf, '\0', 100); bufptr = buf; if((WSAStartup(version, &wsaData)) != NO_ERROR){ printf("error with wsastartup\n"); return FALSE; } if((listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET){ printf("received an invalid socket\n"); WSACleanup(); exit(0); } service.sin_family = AF_INET; service.sin_addr.s_addr = INADDR_ANY; service.sin_port = htons(31337); if(bind(listenSocket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR){ printf("bind failed\n"); closesocket(listenSocket); return FALSE; } if(listen(listenSocket, 1) == SOCKET_ERROR){ printf("listen failed\n"); return FALSE; } printf("listen successful\n"); while(1){ if((acceptSocket = accept(listenSocket, NULL, NULL)) != SOCKET_ERROR){ printf("connection caught\n"); break; } } while(1){ if(!recv(acceptSocket, bufptr, 1, NULL)) break; if(*bufptr == '\n'){ printf("[*] Termination character received, terminating\n"); break; } printf("%c\n", *bufptr); bufptr++; } WSACleanup(); strcpy(other_buf, buf); /*printf("[*] Data recv'd, can we blow this program to pieces?\n");*/ printf(buf); //format string vulnerability return TRUE; } int main(int argc, char **argv){ char buf[512]; if(!networkStackOverflow(buf)){ printf("[*] Failed....\n"); return 0; } printf("[*] Lin0xx's win32 buffer overflow testing proggie!\n"); return 0; }