0x080483f4 <main+0>: push ebp
0x080483f5 <main+1>: mov ebp,esp
0x080483f7 <main+3>: and esp,0xfffffff0
0x080483fa <main+6>: sub esp,0x60 //buffer[0x60]
0x080483fd <main+9>: mov DWORD PTR [esp+0x5c],0x0 //modified = 0
0x08048405 <main+17>: lea eax,[esp+0x1c] //esp+0x1c의 주소가 eax로
0x08048409 <main+21>: mov DWORD PTR [esp],eax //esp에 eax 값 복사
0x0804840c <main+24>: call 0x804830c <gets@plt>
0x08048411 <main+29>: mov eax,DWORD PTR [esp+0x5c]
0x08048415 <main+33>: test eax,eax //eax가 0인지 검사함
0x08048417 <main+35>: je 0x8048427 <main+51> //같으면 main+51로 점프
0x08048419 <main+37>: mov DWORD PTR [esp],0x8048500
//다르면 modified 변수 수정했다고 띄움
0x08048420 <main+44>: call 0x804832c <puts@plt>
0x08048425 <main+49>: jmp 0x8048433 <main+63>
0x08048427 <main+51>: mov DWORD PTR [esp],0x8048529 //"Try again?"
0x0804842e <main+58>: call 0x804832c <puts@plt>
0x08048433 <main+63>: leave
0x08048434 <main+64>: ret
사실 뭘 풀라는건지 잘 몰랐는데 나중에 알고보니 그냥 main+58의 puts를 실행하면 된다더라구요
일단 esp+0x5c가 modified 변수임. esp+0x1c가 buffer일거고..
ESP+0x5C modified 4byte
ESP+0x1C buffer 64byte
64바이트만큼 A로 채우고 4바이트 만큼 B로 채우면
이렇게 되겠네요.
뭐튼 결론적으로 65바이트 부분을 덮어씌우면 modified 변수가 덮어씌이겠죠??