4.4 代码植入
4.4.1 代码植入的原理
本章第2节和第3节已经依次展示了淹没相邻变量改变程序流程和淹没返回地址改变程序流程的方法。本节将给您介绍一个更有意思的实验——通过栈溢出让进程执行输入数据中植入的代码。
在上节实验中,我们让函数返回到main函数的验证通过分支的指令。试想一下,如果我们在buffer里包含我们自己想要执行的代码,然后通过返回地址让程序跳转到系统栈里执行,我们岂不是可以让进程去执行本来没有的代码,直接去做其他事情了!
|
| 图4.4.1 利用栈溢出植入可执行代码的攻击示意图 |
如图4.4.1所示,在本节实验中,我们准备向password.txt文件里植入二进制的机器码,并用这段机器码来调用Windows的一个API函数MessageBoxA,最终在桌面上弹出一个消息框并显示“failwest”字样。