ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

проблема с экплойтом
  #1  
Старый 27.10.2009, 23:10
Аватар для KwKeeper
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
Провел на форуме:
85625

Репутация: 1
По умолчанию проблема с экплойтом

пишу эксплойт , вызывающий переполнение буфера, программа читает буфер и устанавливает eip = ss:[len+6] ; тут то и проблема если я задаю адрес 0x2122f5f5 то он записывает в eip(но это не правильный адрес), если я записываю 0x0022f5f5 то он почему то не учитывает 0х00 а вместо него берет 0x2c. почему?
 
Ответить с цитированием

  #2  
Старый 28.10.2009, 00:45
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

всмысле не учитывает? ты смотри на память. Что кидаеш в буфер и что попадает в стек. Возможно на какомто этапе перезатирается значение (такое часто бывает когда функция юзает локальные переменные).
 
Ответить с цитированием

  #3  
Старый 28.10.2009, 00:52
Аватар для KwKeeper
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
Провел на форуме:
85625

Репутация: 1
Unhappy

Цитата:
Сообщение от slesh  
всмысле не учитывает? ты смотри на память. Что кидаеш в буфер и что попадает в стек. Возможно на какомто этапе перезатирается значение (такое часто бывает когда функция юзает локальные переменные).
да втом то и дело что смотрел!!!!!!!!!
уже голову сломал ап стену!!!!!!!!!!!!!!!!!!

причем странно если я пишу адрес возврата 0x0022f55f то eip становится 2C22F55A
если 0xyy22f55f то yy22F55A
 
Ответить с цитированием

  #4  
Старый 28.10.2009, 01:00
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

скорее всего тогда просто идет работа со стеком, где эти данные и изменяются
ты сделать проверку чтобы был адрес eip
1) 00 00 00 00 - увидиш что меняется
2) FF FF FF FF - аналогично предыдущему, но чуть по другому
3) 60 70 80 90 / 90 80 70 60- если вдруг чтото конвертится. т.е. бывает случае когда конвертятся некоторые символы алфавита. Чтото типа UTF8 кодировки
тут ты и провериш на какие символы влияет это. если вообще дело в этом
 
Ответить с цитированием

  #5  
Старый 28.10.2009, 01:06
Аватар для KwKeeper
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
Провел на форуме:
85625

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

Цитата:
Сообщение от slesh  
скорее всего тогда просто идет работа со стеком, где эти данные и изменяются
ты сделать проверку чтобы был адрес eip
1) 00 00 00 00 - увидиш что меняется
2) FF FF FF FF - аналогично предыдущему, но чуть по другому
3) 60 70 80 90 / 90 80 70 60- если вдруг чтото конвертится. т.е. бывает случае когда конвертятся некоторые символы алфавита. Чтото типа UTF8 кодировки
тут ты и провериш на какие символы влияет это. если вообще дело в этом
1) 00 00 00 00 получаю 696e202c
2) FF FF FF FF получаю FF FF FF FF
3) 60 70 80 90 / 90 80 70 60 получаю 60 70 80 90 / 90 80 70 60

ему однозначно не нравится 0 байт))
 
Ответить с цитированием

  #6  
Старый 28.10.2009, 10:31
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

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

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

  #7  
Старый 28.10.2009, 10:55
Аватар для KwKeeper
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
Провел на форуме:
85625

Репутация: 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. я только начинаю разбираться в этом. статьи которые читал(их не так много) с ошибками идут.
 
Ответить с цитированием

  #8  
Старый 28.10.2009, 11:29
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

sprintf(buffer, "Hello %s, nice to meet you!\r\n\0", name);

ну вот собственно говоря где оно и затирается )
алгоритм работы такой:
1) в буфер запишется строка "Hello "
2) к нему прибавится всё что есть в name до первого 0x00
3) к полученному тексту прибавятся данные ", nice to meet you!\r\n\0"

вот теперь из последней строки возьми 4 байта и разверни их наоборот
", ni" = "in ," и ты получаешь то, о чем я говорил. что они затираются. так что в полюбому затрутся данные начиная с 0x00 по этому придется както ухитрится и не юзать 0
 
Ответить с цитированием

  #9  
Старый 28.10.2009, 11:38
Аватар для KwKeeper
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
Провел на форуме:
85625

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

Цитата:
Сообщение от slesh  
sprintf(buffer, "Hello %s, nice to meet you!\r\n\0", name);

ну вот собственно говоря где оно и затирается )
алгоритм работы такой:
1) в буфер запишется строка "Hello "
2) к нему прибавится всё что есть в name до первого 0x00
3) к полученному тексту прибавятся данные ", nice to meet you!\r\n\0"

вот теперь из последней строки возьми 4 байта и разверни их наоборот
", ni" = "in ," и ты получаешь то, о чем я говорил. что они затираются. так что в полюбому затрутся данные начиная с 0x00 по этому придется както ухитрится и не юзать 0
да я это уже увидел.
а можешь подкинуть ссылки где решается эта проблема?
 
Ответить с цитированием

  #10  
Старый 28.10.2009, 12:12
Аватар для KwKeeper
KwKeeper
Познающий
Регистрация: 21.10.2009
Сообщений: 32
Провел на форуме:
85625

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

это вообще возможно?!??!?!?!
я представляю как можно избавить сам шеллкод от нулей, но как адрес?!?!
ведь мы же не можем ничего с ним сделать, и он должен указывать на наш код.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с дедиками [help!] Sniper482 Безопасность 4 14.09.2009 21:22
Непонятная проблема с интернетом по всей локалке ZneP Администрирование 6 19.06.2009 15:27
проблема с юникодом amorphius PHP, PERL, MySQL, JavaScript 3 05.05.2009 23:00
Проблема с TBrowser donetsk С/С++, C#, Delphi, .NET, Asm 4 06.07.2006 09:37
проблема RocketV1_0 КИРЮХА ! Схемы и программы 0 10.06.2006 23:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ