Winsock Ftp Daemon内存溢出及修复

浏览:
字体:
发布时间:2013-12-09 23:23:36
来源:
当输入的命令行超过172个字符(后接1个/n),程序发生访问异常。
 
向ftp server发送如下方式构造的数据包:
 
if s_block_start("body"):s_static("1"*32)s_static("2"*32)s_static("3"*32)s_static("4"*32)s_static("5"*32)s_static("6"*32)s_static("7"*12)s_static("/n")s_delim(" ")s_block_end()

 

 
当输入的命令行超过172个字符(后接1个/n),0041A661处指令发生访问异常。
 
原因是用全局变量dword_4321F8给ecx赋值时(0040836B指令处),dword_4321F8已经被改写为用户输入命令。
 
漏洞的原因是:
 
在 00402936指令处调用vsprintf之前没有判断目标缓冲区0x432130(只有200字节)的边界,导致后面紧跟的全局变量dword_4321F8被改写。由于程序在向目标缓冲区0x432130打印字符串时会在前面加入“500 undefined command ”这样的前缀,所以用户输入只要超过172个字符就会导致目标缓冲区溢出,程序出错退出。
 
 






 
导致程序出错退出
 
修复的方式:

在 00402936指令处调用sprintf函数时,判断源字符串的长度。程序里类似这样的问题还有很多。
>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();