3

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

http://pastie.org/private/feg8du0e9kfangg4rrg

4

2 回答 2

4

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

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

于 2012-03-24T18:54:39.780 回答
1

这些使用环境变量中的空指针....探索!

于 2012-03-22T17:55:38.837 回答