四、ret2syscall
点击下载文件rop
检查保护
开启了NX保护
IDA查看代码
v4相对ebp偏移与上题算法一样,也是十进制下的108,所以需要覆盖的返回地址相对v4偏移112
这次我们不能直接填充代码,但我们能将系统调用的参数放到对应的寄存器中,执行int 0x80就可以执行放入的调用了
系统调用evecve(“/bin/sh”,NULL,NULL)来获取shell
调用时参数
eax=功能号 evecve为11 所以为0xb
ebx应指向/bin/sh地址
ecx,edx为0
当控制这些寄存器的值时,要使用到gadgets
由上图可得到,0x080bb196控制eax,0x0806eb90控制ebx,ecx,edx
再寻找int 0x80的地址
int 0x80地址为0x08049421还需要得到/bin/sh地址
/bin/sh地址为0x080be408payload
运行
总结
NX保护开启时,无法直接植入自己代码来获取shell时需要用到ropgadgets,利用系统调用获取shell。
网友评论