-
off-by-one 漏洞是一种特殊的溢出漏洞,off-by-one 指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。比如定义的数组是 a[4],在操作的时候却操作a[4],实际上数组最大是到a[3]。
...
-
堆释放(Heap Release)是将已分配的堆内存返还给操作系统,以供其他部分使用。在C语言中,可以使用free()函数来释放动态分配的内存。堆释放的目的是为了释放无用的内存,避免内存泄漏和内存碎片问题,同时提高内存利用率。
一、__libc_f...
-
堆分配(Heap Allocation)是一种内存分配方式,它允许程序在运行时动态分配和释放内存。与静态内存分配方式不同,堆分配不需要在编译时确定内存分配的大小,而是可以在程序运行时根据需要动态地分配和回收内存。在堆分配中,内存被划分为一系列大小不同...
-
堆(Heap)是计算机科学中一类特殊的数据结构,它用于存储可以动态分配和删除内存块的数据。堆通常由一系列称为堆块(Heap Block)的内存块组成,每个堆块可以存储一定数量的数据。在堆中,堆块的大小可以是固定的或可变的。对于可变大小的堆块,它们的大...
-
AWDPlus是一种网络攻防竞赛规则,它源自AWD比赛并加以改进。AWDPlus比赛由多个队伍组成,每个队伍有自己的攻击和防御能力,比赛中将进行攻防双方的对抗。与传统CTF不同的是,AWDPlus有防御环节:赛队识别出靶机环境中存在的漏洞时,需要对其...
-
格式化字符串漏洞(Format String Vulnerability)是一种常见的安全漏洞,它允许攻击者执行任意的代码或者读取敏感的内存信息。这种漏洞通常出现在使用printf函数或其变种时,开发者没有正确地处理用户输入的格式化字符串。攻击者可...
-
RSA是一种非对称加密算法,使用两个密钥,一个用来加密消息和验证数字签名,称为公钥,另一个用来解密,称为私钥。公钥通常是公开的,用于加密会话密钥、验证数字签名或加密可以用相应的私钥解密的数据。私钥则是非公开的,用于解密由公钥加密的数据。本文介绍一些R...
-
Canary是一种用于检测缓冲区溢出和内存错误的特殊字符。Canary的值通常是一个非常特殊的值,它在内存中很难被覆盖或修改。在程序运行时,Canary会存储在特定的内存位置上,当程序尝试访问或写入该内存位置时,Canary的值将被更改。如果Cana...
-
BROP 即 Blind ROP,需要我们在无法获得二进制文件的情况下(在没有给出题目的情况下,只能通过尝试来确定),通过 ROP 进行远程攻击,劫持该应用程序的控制流,可用于开启了 ASLR、NX 和栈 canary 的 64-bit Linux。...
-
在之前的文章中,我们介绍了ret2syscall,即控制程序执行系统调用。而SROP就是利用一个名为 sigreturn 的系统调用进行返回导向编程。与ROP相比,SROP具有可重用性,不太依赖于可执行文件的内容,这使得在大量应用程序中重用相同的SR...