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

admin 2022年6月18日11:21:24程序逆向评论8 views555字阅读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实验室):缓冲区溢出 --- 堆溢出原理分析 | 恶意代码

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月18日11:21:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  缓冲区溢出 --- 堆溢出原理分析 | 恶意代码 http://cn-sec.com/archives/1120887.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: