很久的笔记了,拿出来给大家看看。
Ms06-040本地溢出实验
执行POC代码后载入olly发现ESP,EIP被溢出为61616161. 如图:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-58.png)
。于是载入POC编译好的程序观察溢出细节:
由于我们已经知道出错的函数点,直接去函数点下端观察:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-111.png)
看到大量的字符b被写入栈中,而且在跟踪时还能看到其实b数据的规定长度是127,而unicode是256。继续:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-170.png)
然后开始写入\字符(\x005c---unicode),继续:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-204.png)
准备开始覆盖字符a了.:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-219.png)
字符a成功覆盖进栈中:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-233.png)
可以看到ebp与ebp+4的地方都被覆盖成61616161,nice :) .
我门F8继续到执行return后就如图一样ebp,eip都成61616161.
与是构造代码就出来了.
Shellcode+nop+90+jmp ecx(EIP) //查到CALL ECX的地址是751852f9
结果:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-392.png)
另外再来看看shellcode执行情况:
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-416.png)
可以看到执行到return时.ecx=0012f290(ebp-414),正是覆盖的shellcode起始地址.且在内存中也能看到return已被751852f9(call ecx)覆盖.
posted on 2009-11-06 10:05
Vhk 阅读(343)
评论(0) 编辑 收藏 引用 所属分类:
0day