2024 vnctf givenphp
前置知识
LD_LIBRARY_PATH
是一个linux的环境变量,当执行一个程序时,如果此程序依赖于动态链接的共享库,也就是.so文件,会先在查找LD_LIBRARY_PATH环境变量指定的目录然后是默认共享库(/lib ,/user/lib)
LD_PRELOAD
在 LD_PRELOAD
中指定的文件会在动态链接器按照固定规则搜索共享库之前装载,他比 LD_LIBRARY_PATH
所指定的目录中的共享库还要优先
共享库(如:动态库)搜索顺序如下:
LD_PRELOAD 环境变量指定的共享库路径;
LD_LIBRARY_PATH 环境变量指定的共享库路径;
-rpath 链接时指定的共享库路径;
/etc/ld.so.conf 配置文件指定的共享库路径;
默认共享库路径,/usr/lib,lib
题目
1 |
|
题目有两个功能,一个是文件上传到/tmp目录下,还有一个是环境变量修改
根据本地测试,无论key和value是什么,$fun都是 \x00lambda_1
然后是LD劫持
1.c,把木马写到www目录下
1 |
|
kail执行命令生成1.so文件
1 | gcc -fPIC -shared -o 1.so 1.c -nostartfiles |
python 发上传包
1 | import requests |