HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 19.03.2012, 01:24
Danila_N
Guest
Сообщений: n/a
Провел на форуме:
1518

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

Всем привет!

Изучаю метод ret2libc и столкнулся с проблемой, которая заключается в адресе функции system().

В Ubuntu 11.10 адрес функции system() такой 0x16db20.

В BackTrack 5 адрес функции system() такой 0xb7ead100.

Если в первый адрес добавить "00" (0x0016db20), программа всё равно падает по ошибке сегментации. Т.е, это не выход.

Во втором случае, программа так же падает по ошибке сегментации по адресу 0x46b7ead1.

Как передать управление на такие адреса (и им подобные)?
 
Ответить с цитированием

  #2  
Старый 19.03.2012, 10:53
Danila_N
Guest
Сообщений: n/a
Провел на форуме:
1518

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

Неужели здесь нет специалистов по эксплоитам, способных проконсультировать по данному вопросу?
 
Ответить с цитированием

  #3  
Старый 20.03.2012, 00:31
Danila_N
Guest
Сообщений: n/a
Провел на форуме:
1518

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

Очень жаль, что даже здесь нет квалифицированных специалистов.

Спасибо "за помощь", тему можно закрывать.
 
Ответить с цитированием

  #4  
Старый 20.03.2012, 02:08
Га-Ноцри
Guest
Сообщений: n/a
Провел на форуме:
103014

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

Segmentation fault? У вас память "потекла".



P.S. А вообще самый лучший способ получить конкретный ответ - это задать конкретный вопрос. Включите фантазию. Здесь нет ясновидящих. И вообще вопрос лучше было бы задать в разделе C++ c конкретными выдержками участка кода, где происходит ошибка сегментации. И, да, в 99.9% случаев это вызвано неправильно манипуляцией с указателями, на мой скромный взгляд.
 
Ответить с цитированием

  #5  
Старый 20.03.2012, 02:17
OxoTnik
Guest
Сообщений: n/a
Провел на форуме:
290351

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

А ты что хотел найти на форуме "гомосексуалистов"?
 
Ответить с цитированием

  #6  
Старый 20.03.2012, 09:27
Danila_N
Guest
Сообщений: n/a
Провел на форуме:
1518

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

Меня интересуют не гомики, а специалисты по эксплоитам.

Проблема в данном случае в нулевых байтах адреса функции system() 0xb7ead100.

При переполнении буфера, адрес возврата переписываем этим адресом 0xb7ead100, но из-за нулевых байтов, переход осуществляется по адресу 0x46b7ead1. Т.к. функция strcpy обрабатывает входную строку, до тех пор, пока не встретит нулевой байт (символ конца строки). Таким образом, функция strcpy просто не копирует последний нулевой байт, считая его концом строки, но это не конец строки, а составляющая часть адреса возврата. По этому осуществляется переход по неверному адресу. Кто его знает, что находится там (0x46b7ead1), вот потому и Segmentation fault.

Если изменить адрес 0xb7ead100 на 0xb7ead101, то выполнится переход по указанному адресу (0xb7ead101).

В общем проблема заключается в нулевых байтах адреса возврата, как передать управление на такой адрес? Как его правильно переписать?
 
Ответить с цитированием

  #7  
Старый 20.03.2012, 22:56
Danila_N
Guest
Сообщений: n/a
Провел на форуме:
1518

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

Народ, если никто не может помочь, скажите сразу.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ