Ho trovato un post sulla sicurezza offensiva e durante la lettura, l'autore ha dichiarato che:
At next SEH (when using a SE Handler address that starts with a null byte), we usually will put some code to jump back. After all, the null byte would acts as a string terminator and it does not make sense to put something after the SE Handler address (after all, you would not be able to jump to it anyway, right ?)
Typically, in a scenario like this, we want to do a short jump back… this jumpback opcode looks like this :xebxf0xffxff (so basically, jump back 10 bytes)
Quindi, come da mia comprensione, per tornare indietro, devo convertire il valore decimale in esadecimale (sto usando questo [printf "%x\n" -7]
nella mia shell come un modo rapido per convertire da -7 a hex) quindi aggiungere questo valore a l'istruzione jmp
\xeb
.
Ho 2 domande qui:
1 - il formato finale dell'opcode dovrebbe essere \xeb\xAA\xBB\xCC\xDD
(l'istruzione di salto \xeb
seguita da 4 byte), tuttavia, l'autore include solo 3 byte dopo \xeb
? c'è una percentuale mancante di\xff
?
2 - l'autore afferma che \xeb\xf0\xff\xff
salta indietro di 10 byte, tuttavia, l'ho convertito da solo e ho scoperto che il salto indietro di 10 byte dovrebbe essere \xeb\xf6\xff\xff
invece di \xeb\xf0\xff\xff
che salta indietro di 16 byte?