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

  #7  
Старый 28.10.2009, 10:55
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
С нами: 8713964

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

Цитата:
Сообщение от slesh  
судя по всему дело обстоит так:
Уязвимая функция определяет длину строки и в конце неё дописывает другие данные.
В твоем случае часть этого текста - "in ,"

p.s. а зачем тебе именно настолько нижние адреса?
и что делать?

я с начало вшил шеллкод в буфер(он 0..1024)
программа обращается к [1030] за адресом. но т.к. у меня в шеллкоде содержатся \х00 то из-за них не возникало ошибки.
я взял по адресу [1030] разместил адрес на [1031] куда и положил шеллкод.
адрес я беру из olly'ки смотрю где расположен шеллкод и на него ссылаюсь . вот код

int handling(SOCKET c)
{
char buffer[BUFFER_SIZE], name[NAME_SIZE];
int bytes;
strcpy(buffer, "My name is: ");
bytes = send(c, buffer, strlen(buffer), 0);
if (bytes == -1)return -1;
bytes = recv(c, name, sizeof(name), 0);
if (bytes == -1)return -1;
name[bytes - 1] = '\0';
sprintf(buffer, "Hello %s, nice to meet you!\r\n\0", name);
bytes = send(c, buffer, strlen(buffer), 0);
if (bytes == -1)return -1;
return 0;
}

p.s. я только начинаю разбираться в этом. статьи которые читал(их не так много) с ошибками идут.
 
Ответить с цитированием