Può sfruttare vulnerabilità se il programma è stato avviato con gdb, ma segfaults se avviato senza gdb

2

Attualmente sto cercando di sfruttare un semplice programma chiamato basic_vuln.c

#include <stdio.h>;
int main(int argc, char** argv) {
  char buf[64];  
  strcpy(buf, argv[1]);  
}

Sto usando xubuntu 12.10 con il kernel Linux 3.5.0-17, ASLR spento e compilato con la versione corrente del piccolo compilatore C.

Ora al problema attuale, sto iniettando uno shellcode di base che genera / bin / sh. Il problema è che quando lo eseguo all'interno di gdb, tutto funziona bene e ottengo una shell. Ma se avvio il programma all'interno di bash ottengo un segfault.

Ho cercato di ottenere un core dump per vedere dove si trova il problema, ma suppongo che a causa della memoria corrotta non ne ottengo alcun (se non fornisco al programma alcun argomento, esso segnaults e ottengo un nucleo discarica).

Qualche idea? Se hai bisogno di maggiori dettagli sul sistema come la versione gdb o simile, lo posterò il più velocemente possibile dopo la richiesta.

    
posta Rob 27.03.2013 - 18:35
fonte

1 risposta

2

Questo succederà quasi sempre. Quando carichi un programma in gdb , le cose vengono spostate un po '- non molto, ma abbastanza per far sì che un indirizzo venga sovrascritto in modo errato.

Hai un paio di opzioni, puoi usare strumenti (come il pattern_create.rb di metasploit) per determinare l'indirizzo effettivo del buffer in memoria quando il programma viene eseguito all'esterno del debugger. Questo si ottiene semplicemente passando un pattern non ripetuto al tuo programma, e vedendo a quale indirizzo si verifica il segfault (core dump), in questo modo puoi determinare fino a che punto nel buffer si trova la sezione che è scritta nell'indirizzo di ritorno. / strike> ignora il mio vagabondaggio, questo è completamente non correlato, vai con la slitta di nop

Oppure puoi semplicemente estendere un po 'il tuo NOP sling e iniziare a indovinare gli indirizzi. Di solito non ci vogliono più di una dozzina di tentativi su un piccolo programma.

    
risposta data 27.03.2013 - 20:05
fonte

Leggi altre domande sui tag