标签:
从上面的截图可以看出:将passwd拷贝到/tmp/下,权限发生了变化(在原目录下suid位被设置),复件没有了修改密码的权限。
对于“chsh”,“su”,和“sudo”命令,把这些程序拷贝到用户目录下,同样不再具有root权限。
下面的指令将会把默认的shell指向zsh:
$sudo su
Password:
#cd /bin
#rm sh
#ln -s zsh sh
普通用户运行test文件可以获得root权限
修改为q=1后,不会有效。前面步骤之所以有效,是因为system()函数调用/bin/sh,链接至zsh,具有root权限执行了cat file文件后,接着执行mv file file_new命令。
而当令q=1, execve()函数会把file; mv file file_new 看成是一个文件名,系统会提示不存在这个文件:
在这种情况下,忽略LD_PRELOAD环境变量,不重载sleep函数,使用系统自带的sleep函数:
在这种情况下,使用LD_PRELOAD环境变量,使用重载的sleep函数:
在这种情况下,不会重载sleep函数:
如图所示文件被修改了,原因在于设置uid前,zzz文件就已经被打开了。只要将语句setuid(getuid())移至调用open函数之前,就能避免这个问题。
标签:
原文地址:http://www.cnblogs.com/20125127bxx/p/4472261.html