能力值:
( LV2,RANK:10 )
|
-
-
2 楼
在windows2000中是不是不能在堆栈执行代码?
当然
如果能,是不是不能用带\xff的shellcode?
不是,\xff只是call的机器码,不能call的话...
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这个问题其实自己动手测试一下就能解决,而且拿事实说话,比别人告诉你的更具说服力。
|
能力值:
( LV7,RANK:100 )
|
-
-
4 楼
知道了,我是因为在堆栈执行代码,可能被保护机制给搞的,所以整得/xff一用就位置错乱,谢谢啊,另外想对三楼说,我不是没自己做就问的,而是做了很多遍还是没清楚才问的。 另外同时感谢二位啊
还有个问题,就是不能在堆栈执行代码的话,怎么利用缓冲区溢出漏洞
|
能力值:
( LV7,RANK:100 )
|
-
-
5 楼
像 一个ox0012ff74的返回地址,会被无端改成另一个数据,这就是保护堆栈不执行代码?
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
可以绕过保护机制,只要ebp值不让他改变就行,但是同时也存在一个问题,ebp积存的esp值在windows中是低地址,所以必然有NUL,而NUL字符又会导致溢出中断,无法覆盖返回地址。。。。。。。。。。。。。。
所以还是不知道怎么用,望请高人解答
|
能力值:
( LV7,RANK:100 )
|
-
-
7 楼
关于NUL字符,可以将你的shellcode先通过某种方式加密拷贝至栈中,然后再需要执行的时候,再解密就行了吧?
|
能力值:
( LV7,RANK:100 )
|
-
-
8 楼
问题是不可能得到执行。push ebx的值里有00,如果没有null,则会在函数返回前被检测出堆栈被破坏,返回地址照样不能执行;而有了NUL,返回地址又得不到覆盖。 很是矛盾。
另外,再问上楼windows不能在堆栈执行程序?用ollybdg修改了eip=堆栈地址后,就可以执行。。。。。。
|
能力值:
( LV7,RANK:100 )
|
-
-
9 楼
堆栈保护到底是咋保护的?
被郁闷死了。费了三天了。很莫名奇妙地本来设好的返回地址就变成另一个值。在生成非调试版本,和生成明明去掉VC++的堆栈保护的版本上使用shellcode 都不能执行。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
没记错的话,windows2000是可以在堆栈中执行代码的,堆栈保护是后来CPU生产公司加上去的,而且貌似光有硬件是不够的,还需要操作系统支持,好像是Xp sp2以上的操作系统才支持。对于你的问题,请确保Eip被覆盖成一个可执行的值,一般方法是覆盖成JMP ESP,而Shellcode放在ESP后面,这样当函数返回时就会顺着Shellcode执行。对于Ebp方式其实也差不多,关键是确保覆盖的内容要正确,很久没搞缓冲溢出了,不知道对不对,高手指正。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
错,这表明溢出发生了。因为缓冲溢出发生,所以返回地址才会被改写。
|
能力值:
( LV7,RANK:100 )
|
-
-
12 楼
问题:jmp esp,你这里说的esp是在函数返回时的栈顶地址还是广义上的所有堆栈?
还有我说的返回地址被改写不是说原本的返回地址被改写,而是说,我利用堆栈溢出覆盖好的返回地址居然修改成了其他地址,而且这地址总是离0012ff74很近。当我用一个发生溢出地方比较远的地址覆盖,这时覆盖总会按预期进行,但是此时覆盖后的地址因为在缓冲区上方(低地址),无法覆盖代码。
|
能力值:
( LV7,RANK:100 )
|
-
-
13 楼
高手来下,郁闷死了。 整了好几天了。全是失败。除了真的覆盖了地址(bu shi keyi zhixing daima de dizhi
|
|
|