Адрес функции содержит 00

Написал программу, уязвимую к переполнению буфера. Вводится строка, которая может залезть за пределы кадра функции. Цель — послать на ввод такую строку, чтобы меняла адрес возврата. Если пароль неверный, адресом возврата является 0x080011ec. Мне нужно записать туда 0x080011f0. Строку задаю так:

$(perl -e 'print "A"x40 . "\xf0\x11\x00\x08";')

Как видите, в ней присутствует нулевой байт, который perl игнорирует. Как нужно изменить строку, чтобы работало? Пробовал конкатенировать с 0x080011F0, в память такое значение записывается совсем по-другому.


Ответы (1 шт):

Автор решения: MysNikita

Для моего случая подошло:

$(perl -e 'print "A"x40 . "\xf0\x11";')

Идея в том, что первые два байта адреса возврата перезаписывать нет необходимости.

→ Ссылка