编译super后放到bin目录下,
在PHP中执行shell_exex("super mkdir dir");
super 原文件如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
/*本工具是为PHP调用linux外部命令而写.
*其原理是首先为apatch设置root权限,
*接着调用system执行命令行参数,
*最后返回命令行结果值
*/
int main(int argc, char* argv[])
{
uid_t uid ,euid;
char cmd[2048]={0};
int i,ret=0;
FILE * fp;
uid = getuid() ;
euid = geteuid();
//printf("my uid :%u/n",getuid()); //这里显示的是当前的uid 可以注释掉.
//printf("my euid :%u/n",geteuid()); //这里显示的是当前的euid
setreuid(euid, uid); //交换这两个id
//printf("after setreuid uid :%u/n",getuid());
//printf("afer sertreuid euid :%u/n",geteuid());
for(i=1;i<argc;i++)
{
strcat(cmd,argv[i]);
strcat(cmd," ");
}
strcat(cmd,";echo $? > /tmp/system.return");
system(cmd);
fp=fopen("/tmp/system.return","r");
if(fp)
{
fscanf(fp,"%d",&ret);
fclose(fp);
}
return ret;
}
编译加上权限
chmod u+s super
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。