C 根壳产卵

C 根壳产卵,c,shell,privileges,C,Shell,Privileges,我目前正在研究一本关于安全性的书(我没有公布这本书的名字,因为我不确定网站规则,但如果没有问题,我可以这样做),我遇到了一个代码示例,其目的是生成一个根shell int main(){ char *name[2]; name[0] = "/bin/sh"; name[1] = 0x0; execve(name[0], name, 0x0); exit(0); } 我使用gccshell.c-oshell编译它,然后运行它,但是我得到的是一个公共shell$,而不是根s

我目前正在研究一本关于安全性的书(我没有公布这本书的名字,因为我不确定网站规则,但如果没有问题,我可以这样做),我遇到了一个代码示例,其目的是生成一个根shell

int main(){
  char *name[2];
  name[0] = "/bin/sh";
  name[1] = 0x0;
  execve(name[0], name, 0x0); 
  exit(0);
 }

我使用gccshell.c-oshell编译它,然后运行它,但是我得到的是一个公共shell
$
,而不是根shell
#
。你能告诉我为什么吗

因为您忘了阅读需要将可执行文件归root和setuid所有的部分,然后它才能执行您想要的操作。

简短回答:您不会简单地通过运行
sh
来提升权限。您必须首先以
root
身份运行它。不,我没有<代码>[jack@0day本地]$gcc外壳代码.c-o外壳代码[jack@0day本地]$。/shellcode
sh-2.05b#
。这正是图书指南。然后你需要找一本新书,因为代码不可能有这样的结果。我按照你的建议添加了
chown root
sudo chmod+s
,效果很好。谢谢!