[转载]函数指针攻击
文章作者:houyuewen我不知道这项技术是否被广为所知,但既然在我的“Stack Shield”里有针对他的保护,所以我决定把他写出来。
说起来也很简单:如果一个有缓冲区溢出问题的函数在缓冲区之前有另一个函数的声明,那么攻击者可以用一个Shell代码的指针改写这个指针,而且不需要更改这个函数的返回地址。
这里有一个例子:
#include
#include
void dummy(void) {
printf("Hello world!\n");
}
int main(int argc, char **argv) {
void (*dummyptr)();
char buffer[200];
if (argc < 2)
exit(EXIT_FAILURE);
dummyptr=dummy;
strcpy(buffer, argv[1]); /* Vulnerability */
(*dummyptr)();
exit(EXIT_SUCCESS);
}
如果我们在命令行输入一个至少210个字符的参数给这个程序,那么我们就能是程序执行我们的ShellCode而不需要更改返回地址。
页:
[1]