FTZ Level18

Kail-KM
|2015. 5. 25. 01:30

문제확인


우선 바로 hint를 확인하여 소스코드를 보면 아래와 같이, 지금까지의 소스보다 긴 것을 확인 할 수가 있다. 하지만 여기서 잡아야 할 것은 난잡한 다른 코드가 아닌 count의 값을 감소시켜주는 swith문을 확인 할 수가 있어야한다. 아래 코드에서 보는 것과 같이 "\x08"이 입력될 경우 count의 1 감소하는 것을 확인 할 수가 있다.


스택의 구조를 아래와 같이 확인을 해볼 경우 <Low>  fds[132] - count[4] - x[4] - Check[4] - string[0] ~ string[100] - SFP -RET  <High> 이러한 형태로 나타나는 것을 확인 할 수가 있다. 여기서 우리가 알아야할 것은 기존의 string과 같은 역할을 하는 변수의 위치가 Low 쪽에 위치하기에 우리는 버퍼를 덮어 씌울 수가 있었지만 여기서는 string이 Check보다 위쪽에 있기에 덮어 씌울 수가 없다. 하지만 우리가 알아야 할 것은 바로 포인터 변수의 이동이다. 바로 count-1을 통하여 우리는 버퍼를 이동 시킬 수가 있고 바로 그 조건이 위의 붉은 상자 안에 있는 값이다. 




공격


따라서 우리는 count의 값을 4번 이동 시켜 check에 0xdeadbeef의 값을 주어야 한다. 따라서 페이로드는 아래와 같다.




참고 : http://geundi.tistory.com/131

'Hacking > System Hacking' 카테고리의 다른 글

FTZ Level20 //FSB  (0) 2015.05.31
FTZ Level19 //Chaining RTL Calls  (0) 2015.05.28
FTZ Level17  (0) 2015.05.24
FTZ Level16  (0) 2015.05.22
FTZ Level15 //Hard Coding, EGG  (2) 2015.05.21