· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.VIROLOGY —› Exploit и верхушка стека

Посл.отвђт Сообщен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