본문 바로가기

워게임/protostar

stack0

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+58puts를 실행하면 된다더라구요

일단 esp+0x5c modified 변수임. esp+0x1c buffer일거고..

ESP+0x5C modified 4byte
ESP+0x1C buffer 64byte

64바이트만큼 A로 채우고 4바이트 만큼 B로 채우면


이렇게 되겠네요

뭐튼 결론적으로 65바이트 부분을 덮어씌우면 modified 변수가 덮어씌이겠죠??




'워게임 > protostar' 카테고리의 다른 글

stack5  (0) 2015.10.15
stack4  (0) 2015.10.15
stack3  (0) 2015.10.15
stack2  (0) 2015.10.15
stack1  (0) 2015.10.15