kaspersky И мне не понятно и интересно. Вы же писали, что можно входить/выходить без падения. Или имелось ввиду сначала сплоит делает чёрный ход, потом прога падает и уже затем...? Но это-то как раз элементарно, а вот чтобы сплоит ничего не уронил, тут нужно хотя-бы восстановить стека в прежнее состояние. Как это сделать мне не понятно. И я не понял причём здесь куча, в куче код сплоита не выполняется, по крайней мере я никогда о таком не слышал.
Booster > И мне не понятно и интересно. я не против рассказать, но для начала посоветовал набрать в вике buffer overflow и посмотреть что там пишут. в частности, непостоянность стека обходится путем nop-слайсов и jmp esp. обе техники ненадежны, впрочем. особенно на линухе. > Вы же писали, что можно входить/выходить без падения. если мы затираем только адрес возврата и не гробим остальную часть стека, то шелл-код может раскрутить стек и вернуться в праматеринскую функцию, ибежав падения. в другой ситуации достаточно просто не возвращать управления и падения снова не будет. > Или имелось ввиду сначала сплоит делает чёрный ход, потом прога падает и уже затем...? такой сценарий так же используется. делаем корректный инжект в соседний процесс (поток) и роняем текущий. падение, конечно, штука неприятное, но по факту падения нельзя однозначно сказать: получил shell-код управление или атака провалилась и машина все еще не скомпроменирована. > Но это-то как раз элементарно, а вот чтобы сплоит ничего не уронил, > тут нужно хотя-бы восстановить стека в прежнее состояние. нет, не нужно. достаточно вернуть управление функции выше. пра-материнской или даже пра-пра-пра-...пра-материнской. обычной рапортуют об ошибке для упрощения реализации, но тут возможны варианты. с переполнением кучи сложнее гораздо. скорее всего после переполнения malloc нормально работать не будет и тут действительно легче делать инжект в другой процесс, но опять зависит от. не кривых сплоитов очень мало. та же аврора (не путать с крейсером) жутко кривой код, написанный непонятно кем и для чего. > Как это сделать мне не понятно. И я не понял причём здесь куча, > в куче код сплоита не выполняется, по крайней мере я никогда о таком не слышал. гуглим "once upon a free" классика переполнение кучи очень популярно в наши дни.
kaspersky Немного не в тему, но всёже. Как вы думаете? разработчикам коммерческих продуктов есть, что ловить в linux ? Или любой средний проект, через какое-то время загнётся под давлением аналога open source .. (Хотя бы взять средства защиты и мониторинга системы)
Кстате я не отрицаю что это лучший вариант, и что он возможен. но пока он все-таки сферический в вакууме
PSR1257 > Можно мааленький примерчеГ "непалящегося глазом морфенга"? маленький не получится. чтобы было куда заначить зловредный код, необходим тактический простор, то есть могучий скрипт. в живой природе такие хоть и редко, но встречаются. на iseclab.org есть примеры в открытом доступе. генерация скрипта на лету является хорошим тому примером. если мы генерим "цивильную" html-страницу с кучей скриптов, которые генеряет другие страницы со скриптами и при этом все они выглядят цивильно и однородно, то на этом фоне легко затеряться, особенно учитывая глобальную природу скриптовых переменных.
А. Вы называете "морфенгом" засовывание критичного кода в большую кучу некритичного?... (я полагал что имелось ф виду морфление после которого (здесь - жабаскрипт) не выглядит как гуан).