
大家还记的之前说过的ret2text漏洞吗,那是利用依赖于程序中的存在,执行system(’/bin/sh’)的函数,如果没有这个函数的话,我们怎么办呢?
我们使用ret2shellcode是自定义shellcode代码,但是这中方法的局限性是程序没有开启NX保护,那么如何程序开启了NX保护,这个时候我们就要使用Ret2Syscall大法了!!!!
什么是ROPGadgets? 是在程序中的指令片段,有时我们为了到达我们执行命令的目的,需要多个Gadget来完成我们的功能。Gadget最后一般都有ret,因为要将程序控制权(IP)给下一个Gadret


NX保护开启了



下一步要组合shellcode
系统调用号 eax = 0xb 第一个参数 ebx /bin/sh 第二个参数和第三个参数应该都是 0

ROPgadget --binary ./ret2syscall --only "pop|ret" | grep "eax"
我们选用0x80bb196



这些就是我们要使用的指令片段了

exp如上!

调试!!



回车之后程序会断在系统领空 我们要返回程序领空
首先在gdb中输入finish指令,然后在继续执行exp

程序就断到了read函数处

继续finish



看一下栈中的情况。然后继续finish

到了mian这里,我们再看一个栈中的情况

这时/bin/sh已经写到栈里了

ret2syscall的局限性是很大的,如果没有我们可以使用的指令片段的怎么办,emmm,关注我的后续更新!!
希望大家可以有所收获!!!!