Ret2shellcode
Posted DA1SY
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ret2shellcode相关的知识,希望对你有一定的参考价值。
利用原理
ret2shellcode,即控制程序执行 shellcode 代码。一般来说,shellcode 需要我们自己填充。这其实是另外一种典型的利用方法,即此时我们需要自己去填充一些可执行的代码。
在栈溢出的基础上,要想执行 shellcode,需要对应的 binary 在运行时,shellcode 所在的区域具有可执行权限。
利用关键:
1、程序存在溢出,并且还要能够控制返回地址
2、程序运行时,shellcode 所在的区域要拥有执行权限
3、操作系统还需要关闭 ASLR (地址空间布局随机化) 保护 。
解题步骤:
- 先使用cyclic测试出溢出点,构造初步的payload
- 确定程序中的溢出位,看是否可在bss段传入数据
使用GDB的vmmap查看bss段(一般为用户提交的变量在bss段中)
- 先发送为shellcode的数据写入到bss段
- 在将程序溢出到上一步用户提交变量的地址
system函数
在正常调用system函数的时候,堆栈位置的system_plt之后的内容为system函数的返回地址,在之后才是新的堆栈的栈顶位置,因此在system_plt和sh_addr之间增加了4个字符来进行填充。
以上是关于Ret2shellcode的主要内容,如果未能解决你的问题,请参考以下文章