Использование другой библиотеки c (32) при выполнении двоичного файла на 64-битной машине (Ubuntu 20.04) - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь выполнить 32-битный двоичный файл и использовать с ним собственную библиотеку c. Итак, я использовал переменную среды LD_PRELOAD для установки пути.

export LD_PRELOAD='./libc.so.6'

После этого простой ls показывает эту ошибку -

ERROR: ld.so: object './libc.so.6' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.

Я сейчас пробую это 64-битный компьютер с Ubuntu 20.04, и я получаю эту ошибку. Этот метод отлично работал на одной машине с Ubuntu 18.04. Почему это происходит и есть ли обходной путь для этого?

Контекст: я пытаюсь выполнить задачу CTF, и использование LD_PRELOAD является обычным методом, используемым, когда задача также предоставляет пользовательский libc. Я пробовал запускать сценарии, использующие этот подход и нормально работавшие в Ubuntu 18.04, но они выдают ту же ошибку.

Изменить:
Команда ls работает нормально, но также выводит сообщение об ошибке. Любая выполненная команда будет работать правильно и также покажет эту ошибку. Основная проблема заключается в том, почему это не работает в Ubuntu 20.04, тогда как оно отлично работает в 18.

...