Вопрос насчёт переполнение стэка и выполнение шеллкода.
1.Фаззинг, чтобы узнать размер стэка и получить адрес.
2.Далее узнаем смещение(offset) до этого адреса.
3.Проверяем - смещение + наши знаки.
И смотрим, контролируем ли eip.
4.Далее берём список bad characters и отправляем их.
Смотрим, после каких символов произошел обрыв.
Убираем их из списка и так до тех пор, пока не определим все плохие байты.
К примеру:
buff += "A" * 2000 + ret(найденный нами адрес) + 16 * "\x90" + нагрузка + "C"(Найденный размер - 2000 - 4 - нагрузка)
Зачем в этой цепочке ret?
Который ищут - JMP ESP.
Типо прыжок на вверх стэка и потом переход по адресу, который мы туда положили?
Адрес должен быть исполняемым и без aslr, таковы критерии или я не так все понимаю?
И зачем потом Nop's , если можно сразу нагрузку положить и в конце дополнять всё C ?
1.Фаззинг, чтобы узнать размер стэка и получить адрес.
2.Далее узнаем смещение(offset) до этого адреса.
3.Проверяем - смещение + наши знаки.
И смотрим, контролируем ли eip.
4.Далее берём список bad characters и отправляем их.
Смотрим, после каких символов произошел обрыв.
Убираем их из списка и так до тех пор, пока не определим все плохие байты.
К примеру:
buff += "A" * 2000 + ret(найденный нами адрес) + 16 * "\x90" + нагрузка + "C"(Найденный размер - 2000 - 4 - нагрузка)
Зачем в этой цепочке ret?
Который ищут - JMP ESP.
Типо прыжок на вверх стэка и потом переход по адресу, который мы туда положили?
Адрес должен быть исполняемым и без aslr, таковы критерии или я не так все понимаю?
И зачем потом Nop's , если можно сразу нагрузку положить и в конце дополнять всё C ?