任务 7:LD_PRELOAD 环境变量与 Set-UID 程序
章节大纲
-
在本任务中,我们研究 Set-UID 程序如何处理一些环境变量。包括 LD_PRELOAD、LD_LIBRARY_PATH 以及其他 LD_* 在内的多个环境变量会影响动态加载器/链接器的行为。 动态加载器/链接器是操作系统的一部分,它负责将共享库加载到内存并进行链接。
在 Linux 系统中,ld.so 或 ld-linux.so 是动态加载器/链接器(每个针对不同类型的二进制文件)。在影响其行为的环境变量中,LD_LIBRARY_PATH 和 LD_PRELOAD 是本实验关注的两个变量。加载器/链接器首先需要找到程序需要的共享库,在查找标准目录之前会首先搜索 LD_LIBRARY_PATH 环境变量里指定的目录。如果 LD_PRELOAD 环境变量存在,它里面指定了用户定义的一组共享库,这些库会在所有其他库之前被加载。本任务仅研究 LD_PRELOAD。