ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

19.03.2012, 01:24
|
|
Guest
Сообщений: n/a
Провел на форуме: 1518
Репутация:
0
|
|
Всем привет!
Изучаю метод ret2libc и столкнулся с проблемой, которая заключается в адресе функции system().
В Ubuntu 11.10 адрес функции system() такой 0x16db20.
В BackTrack 5 адрес функции system() такой 0xb7ead100.
Если в первый адрес добавить "00" (0x0016db20), программа всё равно падает по ошибке сегментации. Т.е, это не выход.
Во втором случае, программа так же падает по ошибке сегментации по адресу 0x46b7ead1.
Как передать управление на такие адреса (и им подобные)?
|
|
|
|

19.03.2012, 10:53
|
|
Guest
Сообщений: n/a
Провел на форуме: 1518
Репутация:
0
|
|
Неужели здесь нет специалистов по эксплоитам, способных проконсультировать по данному вопросу?
|
|
|
|

20.03.2012, 00:31
|
|
Guest
Сообщений: n/a
Провел на форуме: 1518
Репутация:
0
|
|
Очень жаль, что даже здесь нет квалифицированных специалистов.
Спасибо "за помощь", тему можно закрывать.
|
|
|
|

20.03.2012, 02:08
|
|
Guest
Сообщений: n/a
Провел на форуме: 103014
Репутация:
76
|
|
Segmentation fault? У вас память "потекла".
P.S. А вообще самый лучший способ получить конкретный ответ - это задать конкретный вопрос. Включите фантазию. Здесь нет ясновидящих. И вообще вопрос лучше было бы задать в разделе C++ c конкретными выдержками участка кода, где происходит ошибка сегментации. И, да, в 99.9% случаев это вызвано неправильно манипуляцией с указателями, на мой скромный взгляд.
|
|
|
|

20.03.2012, 02:17
|
|
Guest
Сообщений: n/a
Провел на форуме: 290351
Репутация:
173
|
|
А ты что хотел найти на форуме "гомосексуалистов"?
|
|
|
|

20.03.2012, 09:27
|
|
Guest
Сообщений: n/a
Провел на форуме: 1518
Репутация:
0
|
|
Меня интересуют не гомики, а специалисты по эксплоитам.
Проблема в данном случае в нулевых байтах адреса функции system() 0xb7ead100.
При переполнении буфера, адрес возврата переписываем этим адресом 0xb7ead100, но из-за нулевых байтов, переход осуществляется по адресу 0x46b7ead1. Т.к. функция strcpy обрабатывает входную строку, до тех пор, пока не встретит нулевой байт (символ конца строки). Таким образом, функция strcpy просто не копирует последний нулевой байт, считая его концом строки, но это не конец строки, а составляющая часть адреса возврата. По этому осуществляется переход по неверному адресу. Кто его знает, что находится там (0x46b7ead1), вот потому и Segmentation fault.
Если изменить адрес 0xb7ead100 на 0xb7ead101, то выполнится переход по указанному адресу (0xb7ead101).
В общем проблема заключается в нулевых байтах адреса возврата, как передать управление на такой адрес? Как его правильно переписать?
|
|
|
|

20.03.2012, 22:56
|
|
Guest
Сообщений: n/a
Провел на форуме: 1518
Репутация:
0
|
|
Народ, если никто не может помочь, скажите сразу.
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|