gpt4 book ai didi

assembly - shellcode 中的空字节?

转载 作者:行者123 更新时间:2023-12-04 00:46:08 33 4
gpt4 key购买 nike

我认为 shellcode 中不允许空字节。在理解一些 shellcode 时,我似乎遇到了一些包含 null 的代码并且运行完美,这是为什么?

http://pastie.org/private/feg8du0e9kfagng4rrg

最佳答案

shellcode 中空字节的问题仅适用于使用 C 标准字符串库的字符串处理中的溢出注入(inject)的情况,其中空字节表示字符串结束,因此复制应停止。使用 C 风格的字符串利用缓冲区溢出是 90 年代中期最流行的 shellcode 注入(inject)方法。目前,大多数 C 代码(AFAIK)使用其他函数(OpenBSD strlcpy/strlcat 集、*_s() 集或自制函数)和不太旧的环境,因为 C++ 已经有了没有空字节的字符串库终止。目前,大多数攻击利用一些编程错误,例如缓冲区太小,或者输入值在某些边界之间时错误检查。

我没有分析您链接的代码,但它似乎在二进制数据中使用了不正确的 TLV 处理。由于二进制数据处理,它无论如何是空安全的(但可以通过另一种方式利用)。

关于assembly - shellcode 中的空字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776889/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com