逆向
文章平均质量分 93
多学点总没错
子春二七
这个作者很懒,什么都没留下…
展开
-
栈溢出(下)
0x10 上篇回顾 上篇文章介绍了栈溢出的原理和两种执行方法,两种方法都是通过覆盖返回地址来执行输入的指令片段(shellcode)或者动态库中的函数(return2libc)。本篇会继续介绍另外两种实现方法。一种是覆盖返回地址来执行内存内已有的代码片段(ROP),另一种是将某个函数的地址替换成另一个函数的地址(hijack GOT)。 0x20 相关知识 0x21 寄存器 在上篇的背景知识中,我们提到了函数状态相关的三个寄存器—esp,ebp,eip。下面的内容会涉及更多的寄存器,所以我们大致介绍下寄存器转载 2021-03-05 15:15:53 · 177 阅读 · 0 评论 -
栈溢出(上)
0x10 本期简介 在计算机安全领域,缓冲区溢出是个古老而经典的话题。众所周知,计算机程序的运行依赖于函数调用栈。栈溢出是指在栈内写入超出长度限制的数据,从而破坏程序运行甚至获得系统控制权的攻击手段。本文将以32位x86架构下的程序为例讲解栈溢出的技术详情。 为了实现栈溢出,要满足两个条件。第一,程序要有向栈内写入数据的行为;第二,程序并不限制写入数据的长度。历史上第一例被广泛注意的“莫里斯蠕虫”病毒就是利用C语言标准库的 gets() 函数并未限制输入数据长度的漏洞,从而实现了栈溢出。 Fig 1. 波转载 2021-03-05 15:15:04 · 236 阅读 · 0 评论