shellcode执行原理,shellcode安装

首页 > 经验 > 作者:YD1662022-11-07 08:22:14

缓冲区溢出属于非常有名的漏洞之一,其大体含义为:缓冲区溢出是超出程序内存设定范围,数据溢出后程序发生异常,黑客可以利用缓冲区溢出执行指定代码,重写栈中的返回地址(ret_Addr)内容来执行任意操作。

本文从栈的介绍、shellcode代码示例、切入思路三个方面进行体系化介绍。

一、栈的介绍

栈是一种内存使用方式,采用LIFO(Last In,First Out,先进后出),像手枪的子弹夹一样。

shellcode执行原理,shellcode安装(1)

示例代码

当调用func函数时,在跳转至函数起始地址的瞬间,栈的形式如下图:

shellcode执行原理,shellcode安装(2)

栈的存储形式

基地址为内存高位,从后向前(向地址递减方向)增长, $1、$2、$3为方法变量地址,ret_addr为main函数返回目标地址。

接下来 esp/rsp逐渐递减,为函数内部的局部变量分配内存空间,a&buff为方法内变量,存储形式如下图:

shellcode执行原理,shellcode安装(3)

方法内变量存储

这时,如果数据溢出,超过了原本分配给buff数组的内存空间,数组后面的ebp、ret_addr以及传递给函数的参数都会被溢出的数据覆盖掉,如下图:


shellcode执行原理,shellcode安装(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.