Há corrupção da pilha. O System () do Function () saiu do código de erro provavelmente 139. Seu aplicativo não percebeu isso porque é um processo diferente.
Preparação de pilha para o novo processo - Bash / System () Diferenças de chamada
-
29-07-2022 - |
Pergunta
Eu tenho um aplicativo que explica o excesso de buffer de pilha. Eu gostaria de provocar ataques de retorno ao LIBC.
O excesso de buffer é baseado em:
int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}
Quando eu chamo esse aplicativo direto do shell, recebo erros esperados - a pilha está corrompida:
[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault
Mas quando estou tentando preparar o argumento em outro aplicativo (executor.c) e ligue para o Vulnapp via System (), nada acontece. Vulnapp aceita argumento de qualquer lenght:
./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$
Não há corrupção de pilha neste caso.
Por que é assim ?
Existe alguma maneira de obter o mesmo efeito (excesso de buffer) no caso do System () Chamada?
Solução
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow