我正在阅读有关Wikipedia 上的 return-to-libc 攻击的信息。
根据我从文章中阅读和理解的内容,ASCII 装甲意味着二进制数据通过将它们分组为 8 位块来转换为 ASCII 值。
文章引用:
实际上,使用 ASCII-Armoring,所有系统库(例如 libc)地址都包含一个 NULL 字节。然而,同样的概念可以用于类似且更高级的攻击,称为 return-to-plt,攻击者不是返回 libc,而是使用二进制文件中加载的 PLT 函数(例如 system@plt、execve@plt、 sprintf@plt、strcpy@plt 等...)。
有人可以解释一下,ASCII 装甲究竟是如何防止缓冲区溢出的?我没有得到它所说的部分,即系统库地址包含一个 NULL 字节。以及如何return-to-plt
防止缓冲区溢出?我搜索了,但没有找到关于return-to-plt
攻击的太多解释。