内存安全试验:ret2libc绕过DEP

问题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

 

猜你喜欢

转载自blog.csdn.net/weixin_42072280/article/details/89915014