问题1:为什么要对retlib程序设置set-UID位?对于设定retlib.c为set-UID程序这一步骤:如果不进行这一步骤,则最后攻击成功之后,跳出来的是一个普通的shell,即$: ;但是设置了这一步之后,攻击成功之后,跳出来的是#: ;就是一个root身份的shell。(已验证) 问题2:retlib程序的编译为什么要在root身份下进行?在普通用户下编译,在root身份下set-UID,可以看到retlib程序的用户依旧是ningan,所以最后攻击之后得到的shell就是一个普通的shell。 正确的做法是在root下编译,root下set-UID进行提权,这样程序的用户就变成了root,攻击成功之后就是#(root身份) 问题3:为什么要用/bin/zsh? 以前的retlib程序是chmod特权程序,以暂时root的身份执行了shellcode,而/bin/sh真实的指向是/bin/zsh,zsh不会收回特权,所以这个shell一直以root身份执行。 显示zsh: command not found: quit 说明这个时候的shell是/bin/zsh |
expl.c part1 retlib.c part1 expl.c part2 retlib.c part2 |
内存安全试验:ret2libc绕过DEP
猜你喜欢
转载自blog.csdn.net/weixin_42072280/article/details/89915014
今日推荐
周排行