1.5.2 成功构造利用

老师说:“这里JMP ESP的地址,会由于版本的不同而不一样。比如在Win2000的User32.dll中,JMP ESP指令的地址分别为:sp0:0x77e2e32a、sp1:0x77e8898b、sp2:0x77e0492b、sp3:0x77e188a7、sp4:0x77e22c75。以前很多攻击利用程序需要带上对方版本的参数,就是这个原因。”

“哦!”

“但随着技术的发展,大家又发现了可以通用的地址。这样,攻击程序的统一化和简单化就有了很大提高。从这里可以看出,技术是不断发展进步的,如果自己有什么发现,一定要公布出来,促进大家讨论,反过来也促进自己提高,否则技术会很快过时的。”

大家都点点头。

“好了,我们把它们综合起来吧!还是对于那个程序,我们把它覆盖成这个样子。”如图1-14。

“把代码合起来,就如图1-15所示。”

“接下来,我们在程序中把‘name’赋成这样的值。它看起来很奇怪,但会得到很奇妙的结果。我们执行,就会弹出想要的DOS对话框了!”

“大家看,写main函数的程序员,他只会去负责读‘name’并赋给output数组,根本不会感觉到‘name’数组中会隐藏这样精心构造的恶意代码;对于任何的‘name’,他都会把它读入并作为正常的东西处理,但会出现想不到的结果,呵呵!如图1-16。”

“这样,我们就完成了首个缓冲区溢出攻击的编写了。感觉怎么样?有收获没有?”

同学们答道:“有!不错不错!”

“有收获就好!下节课我们将进入Windows漏洞的缓冲区溢出利用编写了。OK,今天就到这里,放学!”