본문 바로가기

Research/Exploit Technique

Pwnable Fake EBP Exploit technique

이번에는 Fake EBP에 대해 공부해볼려고 한다.

일단 이 공격기법은 leave 와 ret 에 구조에 의해서 발생되는 취약점이다.

 

이 취약점은 스택 구조에 대해 어느정도 알고있고, SFP 와 RET 에 기능을 어느정도 알고있는 상태에서 공부하는것이 편할거같다. 추가로 어셈에 대한 기본적인 지식이 필요할거같다.

 

먼저 leave 명령어와 ret 에 명령어가 내부적으로 어떻게 실행되는지 알아야된다.

 

leave 명령어는 내부적으로 명령을 실행하게된다.

mov esp, ebp
pop ebp

ret 명령어는 밑에와 같이 실행된다.

pop eip
jmp eip

각 기능에 대해서는 Lazenca 에 정확히 명시되어있다.

조금더 쉬운 설명을 위해 그림을 이용하겠다.

이런식으로 버퍼에는 쉘코드와 더미를 넣는다 그 다음이 중요한데 , 

 

 

값을 이런식으로 넣어주면 공격코드가 실행된다. 

 

이 스택구조를 가지고 공격테크를 따라가게되면, mov esp, ebp 이 명령어에 의해 EBP 와 ESP는 같은곳에 존재하게되고, pop ebp 에 의해 esp 는 ret 를 가리키게 되고, ebp 는 BUFFER-0x4 를 가르키게 된다. 이제 ret 를 실행하게되면, pop eip 가 되므로 esp 는 ret+4 를 가리키게 되고 eip 는 ret 주소를 가리키게 된다. 그다음 jmp eip를 하게되면 쉘코드를 가르키는 주소에 점프가 된다