Перезапись буфера

Перезапись буфера

Рассмотрим как делается перезапись буфера. Давайте приступим к практике.

#Immunity debugger

Для того чтобы грамотно выполнить данную атаку нам понадобится Immunity debugger. Это программное обеспечение для работы с обратной инженерией. В нем мы должны запустить приложение с exe форматом, которое обращается к серверу. И если оно написано не очень грамотно у нас будет возможность перезаписать буфер и в результате получить обратное подключение к серверу.

Первое что мы должны сделать - это использовать фаззинг приложения, чтобы узнать через сколько отправленных байтов оно "Крашнется". Это делается с помощью скрипта на python.

Наша цель тут найти точное значение, поэтому одним скриптом тут не обойдешься, и нам нужно прибавить к нашему результату из скрипта 400 дополнительных байт и отправить их с помощью другого скрипта, в качестве полезной нагрузки.

После того, как мы нашли offset и нашли смещение, вам нужно добавить определенную строку в качестве полезной нагрузки в заданный exploit.py . Эта конкретная строка строится с помощью трех простых строк python:

для x в диапазоне (1, 256):

печать ("\x" + "{:02x}".формат (x), конец=")

печать()

Который приведет к следующему:

\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74... (и тд)

это просто байт-код в порядке возрастания. Таким образом, \x01 - это 01, а \x02 - 02 и т. Д.

Если у вас есть набор смещения, заполнения (BBBB) и полезной нагрузки, вы можете запустить exploit.py против приложения, которое должно аварийно завершить работу с EIP, установленным на 42424242. Щелкните правой кнопкой мыши на ESP и нажмите "следовать в дампе", который должен перейти по адресу ESP. Вы можете немного прокрутить вверх, чтобы проверить, расположены ли ваши AAA и BBBB.

Пример: 🗯У вас строки могут быть другие, это просто наглядный пример чтобы вы поняли🗯

#плохие персонажи

Теперь начинается самая простая часть, просто начните со строки 018DFA30 и считайте вверх для шестнадцатеричных значений. Первый плохой символ - 07, потому что там должно быть 07, но там написано 0A.

Таким образом, это означает, что программа неправильно обрабатывает входные данные. Удалите \x07 из полезной нагрузки, перезапустите приложение и снова запустите эксплойт. Повторяйте до последнего символа вашей конкретной строки (FF соответственно \XFF).

Начать дискуссию