漏洞学习:缓冲区溢出
概念 目前有两种主要类型的缓冲区溢出 基于堆 基于堆栈 堆与堆栈 在程序执行之前,加载程序为其分配一个虚拟地址空间,其中包括堆和堆栈的地址。 堆是一块内存,用于全局变量和变量在运行时分配的内存(动态分配)。 就像自助餐上的一堆盘子一样,软件栈是由保存被调用函数的局部变量的框架构成的。调用函数时将帧压入(放入)堆栈,并在返回时从堆栈中弹出(移出)。如果有……
11-18 立刻查看
漏洞学习:空指针解引用
概念 C/C++语言空指针的值为NULL,一般NULL指针指向进程的最小地址,通常这个值为0. 当程序试图解引用一个期望非空,但是实际为空的指针时,会发生空指针解引用错误。可以导致程序异常终止或拒绝服务。 空指针解引用时C/C++程序中较为普遍存在的内存缺陷类型,当指针指向无效的内存地址并对其解引用时,产生不可预见错误,导致软件崩溃或者拒绝服务。 漏洞……
11-17 立刻查看
漏洞学习:双重释放-Double Free
概念 指对同一个指针指向的内存释放了两次。 对于C语言,同一个指针进行两次Free()操作,可导致二次释放。 对于C++语言,浅复制操作不当时导致二次释放的常见原因之一。例如,调用一次赋值运算符或复制构造函数将会导致两个对象的数据成员指向相同的动态内存。此时,引用计数机制变得非常重要。若引用计数不当,一个对象超出作用域时,析构函数将会释放这两个对象共享的内存……
11-17 立刻查看
漏洞学习:释放后使用-UAF
概念 当动态分配的内存释放时,该内存的内容是不确定的,有可能保存完整并可以被访问。 重新分配和回收释放时由内存管理程序决定的,但是也可能该内存的内容已经被改变,从而导致意外的程序行为。 当内存释放之后,应当保证不再对其进行写入和读取。 UAF会导致包括程序异常终止,任意代码执行和拒绝服务攻击等危险。 漏洞编号 漏洞概述 CVE-201……
11-17 立刻查看