⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sudo_pppoe.c

📁 一个在LINUX下运行的东西
💻 C
字号:
#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <signal.h>#include <errno.h>#define g_print printf int ruid,euid;void be_root(){  ruid=getuid();  euid=geteuid();  if(ruid == euid) {   g_print("Warning: This program wasn't marked setuid in the filesystem.\n");   return;  }  if(setuid(euid) == -1) {    g_print("Failed to be euid -> %d !!\n",euid);  }  else{   g_print("be_euid:I think I done.Real uid = %d, effective uid = %d pid = %d\n", getuid(), geteuid(),getpid());  }}void be_user(){ /* if(seteuid(euid)==-1){  g_print("Failed to noraml euid !!\n");  } else{ g_print("Real uid = %d, effective uid = %d pid = %d\n", getuid(), geteuid(),getpid()); } */ g_print("be_user:euid = %d ,ruid = %d \n",geteuid(),getuid());if(setuid(ruid)==-1){  g_print("Failed to noraml user !!\n");  } else{ g_print("be_user :Real uid = %d, effective uid = %d ,pid = %d\n", getuid(), geteuid(),getpid()); }} char *getexedir(void){ static char str[1024]={0}; char tmp[32]={0}; int len=0; sprintf(tmp,"/proc/%d/exe",getpid()); if((len=readlink(tmp,str,1024))<0)perror("readlink():"); len--; while(len>=0){ 	if(str[len]=='/'){ 		str[len]=0; 		return str; 	 } 		else 		 str[len]=0; 	 len--; 	} 	 return NULL;}int main(int argc ,char **argv){ int pid=0; signal(SIGCHLD ,SIG_IGN); if((pid=fork())==0) {  char *str = getexedir();  char *file = NULL; 	L :         file = malloc (strlen(str)+256); 	if(file==NULL){ 	 fprintf(stderr,"malloc():%s .\n",strerror(errno)); 	 goto L;  } 	sprintf(file,"%s/gtk-pppoe",str); 	be_root(); 	execl(file,"gtk-pppoe",argv[1],NULL); 	fprintf(stderr,"%s :execl():%s !\n",argv[0],strerror(errno));	free(file); 	} 	else //be_user(); 	 g_print("Proc pid = %d euid = %d ,ruid = %d \n",getpid(),geteuid(),getuid()); return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -