Программирование, ориентированное на возврат, — это метод, используемый для обхода защиты стека DEP или NX. Я играю с шеллкодированием ROP в x86_64 Linux.
Проблема в том, что пространство памяти моей программы и разделяемых библиотек, по-видимому, постоянно размещается в более низких адресах памяти.
cat /proc/26327/maps
7fdc62ff9000-7fdc63196000 r-xp 00000000 08:03 5317651 /lib64/libc-2.19.so
12-байтовый адрес памяти мешает мне загружать шеллкод ROP, потому что 0 в адресе памяти завершают функцию strcpy, которую я переполняю.
У меня есть полный контроль над системой и исполняемым файлом. Есть ли способ заставить общие библиотеки загружаться по более высоким адресам памяти, чтобы я мог избежать 0 в адресном пространстве?
'\0'
байт. - person EOF   schedule 12.12.2014