“Double free”漏洞是一种内存管理错误,当程序尝试释放已经释放过的内存时发生,这可能导致内存管理器的数据结构损坏,进而可能引发程序崩溃、数据泄露或被攻击者利用来执行任意代码,通常出现在使用C或C++这类需要手动管理内存的编程环境中;防御这种漏洞的策略包括在释放内存后将指针设置为NULL、使用智能指针、进行代码审查和采用自动内存管理的编程语言。

阅读全文 »

House of Spirit漏洞是一种特定类型的堆溢出攻击,它利用了现代操作系统中堆内存管理的安全特性,如地址空间布局随机化(ASLR)和堆栈保护机制,来绕过这些保护并执行任意代码。

阅读全文 »

栈迁移漏洞(Stack Overflow Vulnerability)通常是指由于栈缓冲区溢出导致的安全漏洞。这种漏洞允许攻击者覆盖栈上的控制数据,如返回地址、帧指针等,进而可能执行任意代码。

阅读全文 »

学习与收获

  1. 对于RELRO保护,有以下3种情况:

    No RELROinit.arrayfini.arraygot.plt均可读可写

    PARTIAL RELROinit.arrayfini.array可读不可写,got.plt可读可写

    FULL RELROinit.arrayfini.arraygot.plt均可读不可写

  2. 程序在加载的时候,会依次调用init_arry中的每一个函数指针,程序在结束的时候,会依次调用fini_array中的每一个函数指针,而我们可以修改其中的函数指针为main函数地址,使main函数再执行一次。一般来说,这个数组的长度为1,也就是说只能写一个地址。

  3. 有时候思路对了一直打不通,可能是参数偏移量算错了。

阅读全文 »