me metí a un "taller" en mi escuela llamado "Buffer Overflow" y me han dejado que de un programa dado
(que al ejecutarse siempre sale "fail...") con el debugger de linux, saque el mensaje "win!"...
pero soy un principiante en todo esto y no se por donde ir...
Obviamente no quiero la respuesta, ya que perderia todo sentido, solo quiero un poco de guia...
sin más les postearé el volcado que me da el debugger... pero de ahí en fuera no se que más hacer...
Por su ayuda, gracias.
Código:
(gdb) set disassembly-flavor intel
(gdb) disas main
Dump of assembler code for function main:
0x080483fc <+0>: push ebp
0x080483fd <+1>: mov ebp,esp
0x080483ff <+3>: and esp,0xfffffff0
0x08048402 <+6>: cmp DWORD PTR [ebp+0x8],0x3
0x08048406 <+10>: jne 0x804840f <main+19>
0x08048408 <+12>: call 0x80483d4 <win>
0x0804840d <+17>: jmp 0x8048414 <main+24>
0x0804840f <+19>: call 0x80483e8 <fail>
0x08048414 <+24>: mov eax,0x0
0x08048419 <+29>: leave
0x0804841a <+30>: ret
End of assembler dump.
(gdb) disas win
Dump of assembler code for function win:
0x080483d4 <+0>: push ebp
0x080483d5 <+1>: mov ebp,esp
0x080483d7 <+3>: sub esp,0x18
0x080483da <+6>: mov DWORD PTR [esp],0x80484f0
0x080483e1 <+13>: call 0x80482f0 <puts@plt>
0x080483e6 <+18>: leave
0x080483e7 <+19>: ret
End of assembler dump.
(gdb) disas fail
Dump of assembler code for function fail:
0x080483e8 <+0>: push ebp
0x080483e9 <+1>: mov ebp,esp
0x080483eb <+3>: sub esp,0x18
0x080483ee <+6>: mov DWORD PTR [esp],0x80484f5
0x080483f5 <+13>: call 0x80482f0 <puts@plt>
0x080483fa <+18>: leave
0x080483fb <+19>: ret
End of assembler dump.
EDIT: Actualización: De alguna manera... no se por qué ni como... pero pude lograr sacar el mensaje de "win!" ... simplemente corriendo el comando
"run 1 1" ... pero no se si esto sea lo que debía hacer y no se por qué salio... :S , disculpas por preguntar cosas tan "triviales"