利用ROP-ret2Syscall突破NX保护

举报
拈花倾城 发表于 2022/01/14 13:29:43 2022/01/14
【摘要】 利用ROP-ret2Syscall突破NX保护

@TOC

大家还记的之前说过的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,关注我的后续更新!!

希望大家可以有所收获!!!!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。