首页 > 系统 > Linux > 正文

Linux系统编程:用PHP执行Root命令

2024-08-28 00:06:14
字体:
来源:转载
供稿:网友

在玩C以前玩过一段时间的PHP, 哪个时候需要用PHP 来运行root命令,一直未果,直到有一天搜索到了super这个插件。

随着玩C的日子多了,发现可以用C语言来包裹 要运行的外部命令。实验了一下,成功了。不需要任何外部工具就可以实现用PHP 执行root命令。我下面就把方法发布给大家,有需求用php来运行root命令的朋友可以不用发愁了。

平台:Linux

实验命令iptables,当前的目录是/var/www/html/http,写程序的时候用root用户,大家都知道iptables 非root用户不能运行。

首先写个C程序,命名为:ipt.c。

#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() {     uid_t uid ,euid;     char cmd[1024];     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; }

编译该文件:

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

好了,已经设置上了,再写一个php页面调用它。

<?php echo '<pre>'; $last_line = system('/var/www/html/http/ipt', $retval); echo ' </pre> <hr />Last line of the output: ' . $last_line . ' <hr />Return value: ' . $retval; ?>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表