Quando si impostano i caratteri errati per il codice shell, c'è qualche svantaggio se si presume che si debba contrassegnare \ x00 e \ x0a come male?
Per shellcode l'unico problema potenziale sono i vincoli di dimensione. Ma assumere che i byte nulli siano cattivi è una cattiva abitudine. Potresti pensare erroneamente che un arresto anomalo non sia sfruttabile perché gli unici indirizzi pop / ROP pop pop iniziano con un byte null.
Determinare i byte errati esatti non è troppo dispendioso in termini di tempo e consiglio sempre di farlo in quanto può risparmiare tempo se devi risolvere il tuo shellcode.
Generalmente, poiché NULL e Line Feed sono sempre caratteri non validi. Ma la dimensione del tuo codice aumenterà. Non automatizzare questo tho.
Ad esempio in IA32 Assembler puoi sostituire l'istruzione
B8 01000000 MOV EAX,1 // Set the register EAX to 0x000000001
Con
33C0 XOR EAX,EAX // Set the register EAX to 0x000000000
40 INC EAX // Increase EAX to 0x00000001
Questo richiede anche meno byte per la codifica, ma in generale sarà più noioso sostituire i caratteri al crescere del numero di caratteri non validi.
Leggi altre domande sui tag shellcode metasploit