问题背景
ret2text漏洞利用,是依赖于程序中存在system("/bin/sh")的函数,如果在程序本身中没有调用这个函数,那怎么办呢?
我们的解决办法是使用ret2shellcode,自定义shellcode代码,但是这种方法的局限性是需要程序没有开启NX保护,那如果程序开了NX保护呢,又该如何呢?
让我们一起来学习Ret2Syscall
基础知识
1、Gadgets:是指在程序中的指令片段,有时为了达到执行命令的目的,需要多个Gadget来完成我们的功能。Gadget最后一般都有ret指令,因为要将程序控制权(ip)给下一个Gadget
2、汇编ret指令,需要好好理解,对下面理解、写Exp有帮助
CPU在执行ret指令时,进行下面2步操作(相当于pop ip)
- (IP)=((SS)*16+(SP))
- (SP)=(SP)+2
具体的,可以参考这篇文章:
https://blog.csdn.net/qq_37340753/article/details/81585083
3、系统调用:
关于系统调用,我们在这篇文章中介绍过:https://bl