如何修改func( )
中的源代码,使得程序执行func()
后返回的地址改变为:指令printf("first print\n”)
被跳过。使用func()
中定义的指针*ret
修改返回地址适本地以实现这一目标。
这是代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(char *str)
{
char buffer[24];
int *ret;
strcpy(buffer,str);
}
int main(int argc, char **argv)
{
if (argc < 2)
{
printf("One argument needed.\n");
exit(0);
}
int x;
x = 0;
func(argv[1]);
x = 1;
printf("first print\n");printf("second print\n");
}
最佳答案
正如 sherrellbc 所指出的,程序的漏洞利用通常是在不修改其源代码的情况下编写的。但如果您愿意,可以将这两行插入到 func()
中:
ret = (int *)&str; // point behind saved return address
ret[-1] += 12; // or however many code bytes are to be skipped
关于linux - 在 Linux 中编写我的第一个漏洞利用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446222/