4.2 RtlAllcoateHeap的失误
“呵呵,对!”老师说道,“我们和Windows下的堆栈溢出相对比。我们先复习一下堆栈溢出利用的三大步骤。”
1.返回点的定位。利用报错精确定位溢出返回点。
2.ShellCode的编写。我们可以自己写,也可以拿现成的用;比较科学的方法是稍微修改一下外面的代码,完成我们想要的功能。
3.跳转到ShellCode。把函数返回点覆盖成JMP ESP的地址,或者把异常处理点覆盖成CALL EBX或者pop pop ret 的地址。
“其示意图如图4-3,也可以是图4-4的样子。”
“这三点大家都还记得吧?”老师问。
“嗯,当然!”
“好,我们就从这三点出发,看看堆溢出的原理和利用吧!”