首页
社区
课程
招聘
[求助]缓冲区溢出的问题
发表于: 2009-11-22 13:37 5385

[求助]缓冲区溢出的问题

2009-11-22 13:37
5385
在windows2000中是不是不能在堆栈执行代码?
        如果能,是不是不能用带\xff的shellcode?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 259
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在windows2000中是不是不能在堆栈执行代码?

当然
如果能,是不是不能用带\xff的shellcode?

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