5.6.1 搜索的原因——长度限制

老师说:“比如一些漏洞,对ShellCode的长度也有一定的限制。”

“长度也有限制?啊?”大家都懵了,“像拆分法那样变换肯定行不通了,越拆越长!”

“对!这就是真正麻烦的地方。”老师说道,“遇到长度有限制的漏洞时一般有两种解决思路。”

“一种方法是找比较短的ShellCode,但可能比较困难,功能也有限;”老师说道,“另一种方法就是:只做一个短的搜索ShellCode的代码,真正的ShellCode放在内存的其他地方,这是我们着重讲的部分。”

“哦?”

“溢出后直接运行的是搜索ShellCode的代码,其功能是在内存中查找真正的ShellCode,查找到后就跳过去执行。”

“因为搜索代码一般可以很短,所以能满足长度限制的要求。”

“搜索代码?”同学们觉得又有新知识可学了,“如何完成搜索的呢?”

“一般说来,搜索从某个接近ShellCode的地址开始,依次查找,当找到某个预定标志的时候,就说明找到了我们的ShellCode。”