protostar_format4

 ·
这次是要重定向到hello函数,buffer有512长度,但是用了 fgets(buffer,sizeof(buffer),stdin)
这样的输入方式,想要溢出攻击有一些困难(有长度限制啊),至少比之前的用gets函数的难(gets函数什么的,太弱了)
hello函数的地址:080484b4
 
 
我们注意到了,这里面vuln函数在结束的时候用了exit(1),exit函数是进程级别的退出,而不是return语句(return是函数级别的退出)
return可以用覆盖返回地址来攻击,但是exit就很难,我们,只能覆盖exit函数的说~
就是把exit(1)这个语句,重定位到hello函数上!
 
exit地址,08049724
 
 
那么,我们可以改变内存0x08049724的内容,这个地方的内容原先是080483f2,也就是这里面的下一条语句
有图有真相:
 
如果想改代码段中的内容,但一般代码段不会让你随便改。
 
把0x08049724 的内容改为 080484b4
 
测试:
 
 
 
经过漫长的调试和测试(说多了都是眼泪,感觉自己太弱了)
  
 
 





posted @ 2013-08-08 11:17  二哥拉手网  阅读(179)  评论(0编辑  收藏  举报