Question

J'ai une application qui explique le débordement du tampon de pile. Je voudrais provoquer une attaque de retour à la LIBC.

Le débordement de tampon est basé sur:

int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}

Lorsque j'appelle cette application directement à partir de shell, je suis prévu d'erreur - la pile est corrompue:

[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault

Mais lorsque j'essaie de préparer l'argument dans une autre application (Executor.C) et d'appeler Vulnapp via System () Call, rien ne se passe. VulnApp accepte l'argument de tout langh:

./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$ 

Il n'y a pas de corruption de pile dans ce cas.

Pourquoi est-ce comme ça?

Existe-t-il un moyen d'obtenir le même effet (débordement de tampon) en cas d'appel système ()?

Était-ce utile?

La solution

Il y a la corruption de pile. Système de fonction () sorti avec le code d'erreur probablement 139. Votre application n'a pas remarqué cela parce que c'est un processus différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top