上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
精勤求学,敦笃励志
——《西安交通大学校训》
把二进制代码安置在输入参数里,精确地计算栈中返回地址的偏移量,通过一个合法的调用执行非法的代码,这听起来似乎有点天方夜谭。如果在20年之前这确实是一件impossible mission,但在软件调试技术高度发展的今天,对于有一定计算机基础的人来说,这已经不是什么难事了。
对于初学者,未经许可渗透进主机获得控制权的道理并不像编写求解“水仙花数”的C语言程序那样浅显易懂,如果用大量的篇幅来维护技术的完整性可能会让本身就很深奥的技术变得更加不可理喻。所以本篇将会把复杂的调试过程抽丝剥茧,提取出最核心的原则和思路,然后配合精心设计的小实验让您深刻体会漏洞利用的精髓。
也许这种叙述方式未能涵盖所有漏洞利用技术的边边角角,但是您在做完全部的调试实验之后一定能够越过技术门槛,进入这片领域,获得真正的提高。
在开始我们的二进制历险之前,您需要进一步坚定自己的意志。要知道扎实的基本功和精湛的调试技术绝不是从书籍上读到的,那需要在实践中不断磨炼。也许若干年之前您已经听说过缓冲区溢出,但唯有跟进内存,盯着寄存器,被莫名其妙的问题反复郁闷,最终让shellcode得以成功执行时,才算得上真正懂得了其中奥妙。
所有漂亮的exploits背后都隐藏着无数个对着寄存器发呆的不眠之夜,如果您没被吓倒,那么我们开始吧!