문제확인


우선 hint 파일을 먼저 확인을 해보면 buf[20]과 check, crap이 스택에 할당 되는 것을 확인 할 수가 있다. 그리고 check의 값이 0xdeadbeef 일 경우에 쉘을 획득 할 수 있는 소스이다. 이또한 fgets를 통하여 45바이트 만큼만 전달이 될 수 있기에 BOF를 방지하고 있다. 이제 GDB를 통하여 메모리를 확인 하여 보자.


DIsas을 통하여 확인 하였을때 0x38 == 50 바이트 만큼이 스택에 할당 되는 것을 확인 할 수가 있다. 하지만 여기서 우리는 Check라는 정확한 위치를 찾아야 하기 떄문에 우리는 더미가 얼마나 할당이 되는 지를 확인 할 수가 있어야 한다. 그렇기에 distance.c라는 프로그램을 우리가 작성하여 확인을 해보자.


아래와 같이 컴파일을 한 후에 실행을 하였을 경우 Buf[20] + Dummy[20] + Check[4] + Crap[4] + Dummy[20] + SFP + RET 라는 것을 확인 할 수가 있다. 이제 이를 통하여 우리는 공격을 시도 할 수가 있다.



공격


Buf[20]과 Dummy[20]을 무작위 값으로 채운후에 Checkdp 0xdeadbeef를 씌어준다면 공격은 성공한다. 그리고 여기서 또한 cat을 붙여줌으로 인하여 입출력을 유지 하여야 한다는 것에 유의하여야 한다.


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

FTZ Level16  (0) 2015.05.22
FTZ Level15 //Hard Coding, EGG  (2) 2015.05.21
FTZ Level13 //RTL, EGG  (0) 2015.05.13
FTZ Level12 //BOF,RTL,EGG,Backdoor  (0) 2015.05.10
FTZ Level11 //BOF,EGG,Format String  (0) 2015.05.09