⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vulnerable.c

📁 C语言实战105例的光盘所附程序
💻 C
字号:
#include <stdio.h> 
#include <netdb.h> 
#include <netinet/in.h> 
#define BUFFER_SIZE 1024 
#define NAME_SIZE 2048 
int handling(int c) 
{
	char buffer[BUFFER_SIZE], name[NAME_SIZE]; 
	int bytes; 
	strcpy(buffer, "My name is: "); 
	bytes = send(c, buffer, strlen(buffer), 0);
	if (bytes == -1)
		return -1; 
	bytes = recv(c, name, sizeof(name), 0);
	if (bytes == -1)
		return -1; 
	name[bytes - 1] = ’\0’; 
	sprintf(buffer, "Hello %s, nice to meet you!\r\n",name); 
	bytes = send(c, buffer, strlen(buffer), 0); 
	if (bytes == -1) 
                        return -1;  
} 
int main(int argc, char *argv[]) 
{
	int s, c, cli_size; 
	struct sockaddr_in srv, cli; 
	if (argc != 2) 
	{ 
		fprintf(stderr, "usage: %s port\n", argv[0]); 
		return 1; 
	} 
	s = socket(AF_INET, SOCK_STREAM, 0); 
	if (s == -1) 
	{ 
		perror("socket() failed"); 
		return 2; 
	} 
	srv.sin_addr.s_addr = INADDR_ANY; 
	srv.sin_port = htons( (unsigned short int) 
	atol(argv[1])); 
	srv.sin_family = AF_INET; 
	if (bind(s, &srv, sizeof(srv)) == -1) 
	{ 
		perror("bind() failed"); 
		return 3;
	} 
	if (listen(s, 3) == -1)
	{ 
		perror("listen() failed"); 
		return 4; 
	} 
	for(;;) 
	{ 
		c = accept(s, &cli, &cli_size); 
		if (c == -1) 
		{ 
			perror("accept() failed"); 
                        return 5; 
                }
                printf("client from %s", inet_ntoa(cli.sin_addr)); 
                if (handling(c) == -1) 
                	fprintf(stderr, "%s: handling() failed", argv[0]); 
                close(c); 
         } 
         return 0; 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -