Grafico
la funcion
Dump of assembler code for function main:
0x0804844e <+0>:push %ebp
0x0804844f <+1>:mov %esp,%ebp <-- guardar EBP en ESP
0x08048451<+3>:call 0x8048430 <return_input> <-- este es el inicio de la funcion a explotar
0x08048456 <+8>:mov $0x0,%eax
0x0804845b <+13>:pop %ebp
0x0804845c <+14>:ret <--aqui llega ret es 0
(gdb) x/20x $esp
0xbfffef6c:0xbfffef720x000000010xbffff0340xbffff03c
0xbfffef7c:0x4fa1cf5d0x4fb993c40x000010000x0804846b
0xbfffef8c:0x4fb98ff40xbfffef980x08048456 -returnaddress0x00000000 -RET
0xbfffef9c:0x4fa046350x000000010xbffff0340xbffff03c
0xbfffefac:0xb7ffe6b00x000000010x000000010x00000000
(gdb) continue
Continuing.
AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDAAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDD
Breakpoint 2, 0x0804844d in return_input () at ejemplo2.c:8
8}
(gdb) x/20x 0xbfffef6c
0xbfffef6c:0xbfffef720x414100010x414141410x414141410xbfffef7c:0x424242420x424242420x434342420x43434343
0xbfffef8c:0x434343430x44444444 -EBP 0x44444444 -RETURN 0x00000000 -RET
0xbfffef9c:0x4fa046350x000000010xbffff0340xbffff03c0xbfffefac:0xb7ffe6b00x000000010x000000010x00000000
esta sobreescrito EBP y return, dejando 4 para RET
Recordar bien que para ver los datos exactos hay que analizar no nadamas main tambien las funciones
(gdb) disas main
Dump ofassembler code for function main:
0x080485ee <+0>:push %ebp
0x080485ef <+1>:mov %esp,%ebp
0x080485f1 <+3>:call 0x8048573 <validate_serial>
0x080485f6 <+8>:test%eax,%eax
0x080485f8 <+10>:je 0x8048601 <main+19>
0x080485fa <+12>:call 0x80485b2 <do_valid_stuff>
0x080485ff <+17>:jmp 0x8048606 <main+24>
0x08048601<+19>:call 0x80485d0 <do_invalid_stuff>
0x08048606 <+24>:mov $0x0,%eax
0x0804860b <+29>:pop %ebp
0x0804860c <+30>:ret
End of assembler dump.
(gdb) disas...
Regístrate para leer el documento completo.