缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

admin 2022年6月18日11:21:24评论40 views字数 555阅读1分51秒阅读模式

                欲买桂花同载酒,终不似 少年游。


堆结构图如下:

缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

图-堆概略图

缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

图-堆详细图


在进行正常的申请内存时,系统将符合的空间结点进行外排,将剩余的前后结点进行相连

//此处node可以替换为上图的B结点node->bp->fp = node->fpnode->fp->bp = node->bp


根据堆的详细图来看有三个空间节点,从左到右依次定义为A、B、C

  • 如果我们在申请空间时,函数自动为我们分配为B空间,那么就会将A空间与C空间相连

  • 而在对B空间进行数据的拷贝操作过程中,多拷贝十六字节的数据,对fp和bp进行污染,将fp设定为任意值,bp设定为任意地址

  • 缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

  • 再次进行内存分配时,如果是将C空间分配出去,则执行如下语句,就是将两个不相关的空间进行连接

//此处的node当做上图的C结点node->bp->fp = node->valuenode->fp->bp = node->where
  • 如果bp指向的任意地址是一个函数,而任意值指向的空间为恶意代码,那么就相当于更改了函数的原本功能

  • 缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

                                     图-第二次调用malloc之前

缓冲区溢出 --- 堆溢出原理分析 | 恶意代码


图-第二次调用malloc后

  • 如果再次执行函数的话,那么就达到了执行恶意代码的目的


原文始发于微信公众号(0x00实验室):缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月18日11:21:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   缓冲区溢出 --- 堆溢出原理分析 | 恶意代码https://cn-sec.com/archives/1120887.html

发表评论

匿名网友 填写信息