slide-image

LOB

[the Lord Of Buffer overflow]

# 20 : xavius->death_knight

 

마지막 LOB 문제이다. 이거 쓰고 나서는 LOB 풀이한 걸 처음부터 읽어보고, 다시 풀어볼 생각이다.

 그리고 FC로 넘어갈 것 같다.

 

일단 cat death_knight.c의 결과이다.

/*
        The Lord of the BOF : The Fellowship of the BOF
        - dark knight
        - remote BOF
*/

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> 
#include <string.h> 
#include <sys/types.h> 
#include <netinet/in.h> 
#include <sys/socket.h> 
#include <sys/wait.h> 
#include <dumpcode.h>

main()
{
	char buffer[40];

	int server_fd, client_fd;  
	struct sockaddr_in server_addr;   
	struct sockaddr_in client_addr; 
	int sin_size;

	if((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1){
		perror("socket");
		exit(1);
	}

	server_addr.sin_family = AF_INET;        
	server_addr.sin_port = htons(6666);   
	server_addr.sin_addr.s_addr = INADDR_ANY; 
	bzero(&(server_addr.sin_zero), 8);   

	if(bind(server_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1){
		perror("bind");
		exit(1);
	}

	if(listen(server_fd, 10) == -1){
		perror("listen");
		exit(1);
	}
        
	while(1) {  
		sin_size = sizeof(struct sockaddr_in);
		if((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &sin_size)) == -1){
			perror("accept");
			continue;
		}
            
		if (!fork()){ 
			send(client_fd, "Death Knight : Not even death can save you from me!\n", 52, 0);
			send(client_fd, "You : ", 6, 0);
			recv(client_fd, buffer, 256, 0);
			close(client_fd);
			break;
		}
            
		close(client_fd);  
		while(waitpid(-1,NULL,WNOHANG) > 0);
	}
	close(server_fd);
}

 

-수정중-

리모트 어택하는데, 칼리 환경에서 돌려보고 있는데 자꾸 익스 코드가 안먹힌다.

코드가 잘못된건지.. 통신은 되는데;

 

 

 

 

'Wargame > LOB(Redhat)' 카테고리의 다른 글

[LOB] nightmare->xavius  (0) 2019.07.05
[LOB] succubus->nightmare  (0) 2019.07.03
[LOB] zombie_assassin->succubus  (0) 2019.07.01
[LOB] assassin->zombie_assassin  (0) 2019.04.01
[LOB] gaint->assassin  (0) 2019.03.31