zoo是用于维护文件集的文件压缩工具。 zoo在处理文件名时存在缓冲区溢出漏洞,攻击者可能利用此漏洞在机器上执行任意指令。 zoo中的fullpath()/misc.c接受指向目录项的指针并返回组合的目录名和文件名。fullpath()调用combine()/misc.c函数,并假设返回字符串长度不会大于256字节,但事实上该字符串可能大于512字节。 如果字符串事实上大于256字节的话,就会在fullpath()/misc.c函数中溢出静态变量,之后的strcpy()操作中会在栈上256字节的目标缓冲区上使用这个字符串。因此攻击者可以轻易的覆盖EIP,从而控制程序的流程。
zoo是用于维护文件集的文件压缩工具。 zoo在处理文件名时存在缓冲区溢出漏洞,攻击者可能利用此漏洞在机器上执行任意指令。 zoo中的fullpath()/misc.c接受指向目录项的指针并返回组合的目录名和文件名。fullpath()调用combine()/misc.c函数,并假设返回字符串长度不会大于256字节,但事实上该字符串可能大于512字节。 如果字符串事实上大于256字节的话,就会在fullpath()/misc.c函数中溢出静态变量,之后的strcpy()操作中会在栈上256字节的目标缓冲区上使用这个字符串。因此攻击者可以轻易的覆盖EIP,从而控制程序的流程。