CCProxy v6.2
来源:互联网 发布:ios6越狱软件源 编辑:程序博客网 时间:2024/05/01 09:22
放了很多天了,一直想写一下。
以Telnet的方式登录CCProxy,输入ping 2000个c,CCProxy报错退出。
核心部分:
430300: sub esp,430h //函数预留出的缓冲区空间
...
430379: push esi //输入的错误参数“c...”的地址
43037A: lea edx,[esp+40h]
43037E: push 478EE8 //提示语“Host not found:%s”的地址
430383: push edx //存放完整提示的缓冲区 (11062EC)
430384: call _sprintf() //溢出点所在,这个函数是作者自己写的
...
4303D6: add esp,430h
4303DC: retn 0Ch
当时堆栈中的情况如下:
11066F0中存放的是上面这个函数的返回地址,而存放完整提示的缓冲区的首地址是11062EC,
中间有0x404的空间,字符串“Host not found: ”占用了0x10字节,所以留给参数的位置只有0x3F4.
我们刚才输入的参数个数为2000,远超0x3F4,实际上,回车换行还有/0各占一个字节,
也就是输入参数的长度临界点时0x3F1,超过这个数字就会出问题。
问题就出在作者自己写的_sprintf()里,没有检查传入参数的长度,分配出的430h缓冲区中存放_sprintf()显示内容,结果导致会覆盖这一层函数的返回地址。
- CCProxy v6.2
- CCProxy
- Portable mIRC v6.2
- RHEL v6.2
- FreeFileSync v6.2
- v6!!!!!!!!!!!
- CCProxy Shell
- ccproxy.exe
- 代理服务器-CCProxy
- CCproxy代理服务器
- 代理服务器CCProxy
- Actual.Window.Manager.v6.2
- Universal Viewer v6.5.6.2
- V6+2C6678 时钟调试
- CCProxy ver. 6.39 Multilanguage
- CCProxy ver. 6.4.1
- CCPROXY的设置方法
- CCProxy 代理 配置
- ubuntu7.10 is comming!
- String类型参数的传值问题
- 拷贝构造函数和赋值运算符区别
- EJB3常见异常及解决
- 简单的爱,简单的幸福
- CCProxy v6.2
- 学习兴趣
- DNS RPC
- How to learn Japanese ?
- 软件工程学习方向
- 第一次来,试试
- tiles的使用过程
- TopLanguage讨论精选一(2007.8-2007.10)
- 结婚原来是这样