background image

PHP 中 执行 root 命令的办法

需要任何外部工具就可以实现用

PHP 执行 root 命令. 

平台

:Linux. 实验命令 iptables  当前的目录是/var/www/html/http 

写程序的时候

 用 root 用户

大家都知道

iptables 非 root 用户不能运行. 

首先写个

C 程序 命名为:ipt.c 

[CODE] 

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 

    uid_t uid ,euid; 

    uid = getuid() ; 
    euid = geteuid(); 

    printf("my uid :%u\n",getuid());  //这里显示的是当前的 uid 可以注释掉. 
    printf("my euid :%u\n",geteuid()); //这里显示的是当前的 euid 
    if(setreuid(euid, uid))  //交换这两个 id 
        perror("setreuid"); 
    printf("after setreuid uid :%u\n",getuid()); 
    printf("afer sertreuid euid :%u\n",geteuid()); 

    system("/sbin/iptables -L"); //执行 iptables -L 命令 
    return 0; 

[/CODE] 
编译该文件

 gcc -o ipt -Wall ipt.c 在该路径下生成 ipt 这个可执行文件. 如果现在用 PHP 网页

调用

 该 ipt 的话,即使 setreuid 了 也是不行的. 接下来要做的是 chmod u+s ./ipt 

ls 一下 
-rwsr-xr-x  1 root root 5382 Jul  2 21:45 ipt 

s 位已经设置上了. 再写一个 php 页面调用它. 

[CODE] 
<?php 
echo '<pre>';