shellcode中的空字节?

时间:2012-03-19 19:51:30

标签: assembly shellcode

我认为shellcode中不允许使用空字节。在理解一些shellcode的同时,我似乎遇到了一些包含null的代码并且工作完美,为什么会这样?

http://pastie.org/private/feg8du0e9kfagng4rrg

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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