OK,继上文对栈结构有了深刻的了解后,我们大概可以猜到栈溢出的受害者了,就是这个返回地址
计算机是很傻的,返回地址是哪就去哪执行命令,被人摆了一道都不知道@_@
程序允许传入的参数是Buff,嘿嘿,那么只要我们传入一个超长的字符串,那么下图中的Buff就可以长到能覆盖掉EBP和返回地址
假设我们传入"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF........."那么返回地址就会被覆盖为0xFFFFFFFF,当调用完这个函数要返回主函数时,EIP被赋值为0xFFFFFFFF,下一步程序就跑到0xFFFFFFFF处去执行命令了,当然了,0xFFFFFFFF是内核空间,操作系统不会让你执行的,直接抛出异常!
OK,那么我们就换个地址呗,不要0xFFFFFFFF,那换什么呢??什么地址处的内容我们可以DIY呢??快看上图,