C'è corruzione dello stack. Function System () è uscito con il codice di errore probabilmente 139. L'applicazione non l'ha notato perché è un processo diverso.
Preparazione dello stack per il nuovo processo - Bash / System () Differenze di chiamata
-
29-07-2022 - |
Domanda
Ho un'applicazione che spiega lo stack buffer overflow. Vorrei provocare un attacco di ritorno al ritorno.
Il overflow del buffer si basa su:
int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}
Quando chiamo questa applicazione direttamente da Shell, ricevo l'errore previsto: lo stack è corrotto:
[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault
Ma quando sto cercando di preparare l'argomento in altre app (Executor.C) e chiamare Vulnapp tramite System () Call, non succede nulla. Vulnapp accetta l'argomento di qualsiasi Lenght:
./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$
In questo caso non c'è corruzione dello stack.
Perché è così?
Esiste un modo per ottenere lo stesso effetto (overflow buffer) in caso di chiamata di sistema ()?
Soluzione
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow