-
-
关于溢出的 方法
-
发表于:
2008-5-1 11:21
4468
-
看西方必败 老师的文章,知道常见溢出的方向大概有2种
一种是用大量nop覆盖内存,也就是堆喷散技术,最后一定会执行到shellcode的
另外一种是跳到esp,指向覆盖esp后面内容的shellcode..
第二种方法我想不明白,
如果我们要溢出一个程序,想要运行shellcode,必须知道自己写的shellcode覆盖到的地址,取得这个地址用esp法可以很方便的得到:eap.问题是如何跳转到esp,要返回的原程序代码中一般是碰不到jmp esp的.
可以让返回的eip=esp,但这样得实现知道堆栈地址,实践中做不到
让返回的eip="jmp esp"的地址,这个是老师推荐的方法,可是如何得到这个"jmp esp "的地址呢?
只有在系统里面找通用"jmp esp"点?
或者有其他办法让被溢出系统运行"jmp esp"?
但如果已经办法让被溢出系统运行某段代码了,直接运行shellcode即可啊!
于是这个思路只有用一个固定地址的"jmp esp"了?
这样不和linux下面的溢出一样了?
windows的"堆栈不固定"不会影响吗?
看到一个中文通用"jmp esp"地址
自己测试了下确实是这样,那这些通用地址会不会出现意外呢?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)