gpt4 book ai didi

c - gethostbyname 缓冲区溢出

转载 作者:行者123 更新时间:2023-11-30 20:38:18 25 4
gpt4 key购买 nike

我研究了 GHOST 或 CVE-2015-0235 漏洞。我发现我的系统很脆弱。我写了一个测试程序来看看效果。但我什么也看不见。听到的是我的尝试:

    user@debian:~$ uname -a 
Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3 i686 GNU/Linux
user@debian:~$ ./GHOST
vulnerable
user@debian:~$ cat ghost-example.c
#include <string.h>
#include <stdio.h>
#define len 2000000

struct{
char buf[len];
char canary[32];
}buffer;

void main()
{
memset(buffer.buf,'9',len);
buffer.buf[len-1]='\0';
strcpy(buffer.canary,"the vulnerable part of program\n");
gethostbyname(buffer.buf);
printf(buffer.canary);
}
user@debian:~$ gcc ghost-example.c -o ghost-example
user@debian:~$ ./ghost-example
the vulnerable part of program

我不知道发生了什么? gethostbyname()、gethostbyname_r()、gethostbyname2() 或 gethostbyname2_r 之间有什么区别。我对此有很多研究。有谁能够帮助我?谢谢。

最佳答案

也许您没有使用足够大的缓冲区?我觉得这很难相信,因为 2000000 在缓冲区溢出领域是巨大的。

或者,碰巧 ret 地址 0x393939390x3939393939393939 是完全有效的。我觉得这很难相信。您应该会看到一个段错误,其跟踪结束于该地址周围的某处。

很可能,gethostbyname 没有溢出。也许您的诊断是错误的,您的机器不再容易受到影响。

关于c - gethostbyname 缓冲区溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29560395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com