J'étudie la vulnérabilité GHOST ou CVE-2015-0235. Je découvre que mon système est vulnérable. J'écris un programme de test pour voir l'effet de ceci. mais je ne vois rien. entendre est mes tentatives:gethostbyname buffer overflow
[email protected]:~$ uname -a
Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3 i686 GNU/Linux
[email protected]:~$ ./GHOST
vulnerable
[email protected]:~$ 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);
}
[email protected]:~$ gcc ghost-example.c -o ghost-example
[email protected]:~$ ./ghost-example
the vulnerable part of program
Je ne peux pas savoir ce qui se passe? Quelle est la différence entre gethostbyname(), gethostbyname_r(), gethostbyname2() ou gethostbyname2_r. J'ai beaucoup d'études à ce sujet. quelqu'un peut-il m'aider? merci.
Pourriez-vous préciser en quoi exactement vous avez des problèmes? – Scis
'char buf [2000000];' êtes-vous sûr? il semble trop grand –
quand j'appelle gethostbyname_r dans le programme GHOST il provoque l'écrasement sur la mémoire dans la variable canary mais pas dans ce cas. hear est GHOST.c source: https://webshare.uchicago.edu/orgs/ITSec/itsec/Downloads/GHOST.c – elahe