|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 10, 2004 15:49:57 Просматривал эксплоиты в частности RPC/DCOM & LSASS - практически во всех жестко забиты адреса верхушки стеков для различных осей. Я так понимаю это делается для нахождения адреса kernel32 - но вот в чем вопрос почему нельзя сделать это в самом эксплоите через TEB? Ведь это очень хорошо скажется на платформонезависимости. Или есть нюансы которых я не знаю? |
|
|
Дата: Ноя 11, 2004 10:56:37 Даже не совсем так - жестко там забиты таргеты или адреса возврата. Кто нить знает что это? |
|
|
Дата: Ноя 11, 2004 11:31:36 >жестко там забиты таргеты или адреса возврата. а что здесь не ясно-то? стоит задача выполнить свой код, расположенный в стеке. Как на него передать у правление? Просто. Изменить адрес возврата, что и возможно сделать при имеющейся ошибке(неважно, bo, format string, heap overflow). На примере windows. Для каждого билда имеются свои статичные адреса в памяти инструкций системных библиотек. К примеру, 0x717564B8 jmp esp (comctl32.dll) |
|
|
Дата: Ноя 11, 2004 14:46:28 Ясно - т.е просто то число которое перезапишет стекпоинтер при переполнении стека или blink для кучи. Просто в коде оно называется таргет - это меня смутило. А есть способы кроме дизассемблирования которые помогут определить одрес этот - я так понимаю что самый простой загнать буфер большой и смотреть где выпадет по GPF? |
|
|
Дата: Ноя 11, 2004 17:36:01 в двух-трех словах так: call proc1 <- после вызова в стека адрес возврата call proc2 ... proc1: sub esp, 10*4 <--- выделяем 10 двордов в стеке (11й - адрес возврата и за ним шеллкод) переполняем буфер, затираем 11й дворд ret <-- после возврата esp указывает на шеллкод, значит управление через ret надо передавать на комманду jmp esp (адресс в памяти комманды jmp esp и есть тот самый таргет) вот собссно и все :) |
|
|
Дата: Ноя 11, 2004 18:35:22 Не совсем понятно зачем jmp esp нельзя просто перезаписать адрес возврата адресом шелкода? |
|
|
Дата: Ноя 11, 2004 19:05:22 а ты знаешь адресс своего шеллкода в стеке? :) поэтому и jmp esp |
|
|
Дата: Ноя 11, 2004 19:08:48 тем более стек в винде обычно в 0012xxxx располагается а при переполнении нулей быть не должно. а вот системные длл-ки в 77хххххх адресах |
|
|
Дата: Ноя 12, 2004 11:29:00 Т.е сам поиск таргета сводится к дизасму системных dll для разных ОС на передмет содержания команды jmp esp и адрес этой команды и подставляется адресом возврата так? Так а че тогда для одной оси но для разных эксплоитов (даже если действие происходит в одном процессе svchost к примеру) таргеты разные? или это по принципу кто где нашел? |
|
|
Дата: Ноя 13, 2004 02:40:49 сводится к поиску байт FFh E4h (адрес которых бы не содержал бы в себе нуля) в дллках которые подгружаются к этому процессу |
|
|
Дата: Ноя 15, 2004 14:16:31 Кстати jmp esp/call esp(вообще интересная команда:) не всегда помогают - ибо если эксплоитится ф-ция в которая принмает указатель на буфер и заполняет его, либо модифицирует аргументы свои то получим GPF потому как врядли наш шел код при приведении к дворду укажет на писчую память. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.049 |