본문 바로가기
Security_/pwnable

[Pwnable] Fake EBP 정리

by 낭람_ 2018. 11. 6.
반응형

[Fake EBP]


ebp를 속이는 기법으로 sfp를 조작 가능하고, ret의 값을 leave / ret 가젯의 주소로 변경이 가능할 때 이용한다.

즉, ebp를 속이고 leave / ret를 한번더 실행시키는 기법


이 기법의 핵심은 함수의 에필로그 부분을 이용하는 것이다


leave

mov esp, ebp

pop ebp


ret

pop eip

jmp eip


원리

1. (leave) mov esp, ebp 를 통해서 esp를 ebp로 이동시킨다.

2. (leave) pop ebp 를 통해 변조된 ebp를 꺼낸다.

3. (ret) pop eip 를 통해 eip는 leave / ret 를 가리킨다. 즉, ret에 leave / ret 가젯이 들어있어야한다.

4. (ret) jmp eip 를 통해 leave / ret 가 한번더 실행이 된다.

5. (leave) mov esp, ebp 를 통해서 esp가 변조된 ebp로 이동한다.

6. (leave) pop ebp 를 통해 esp+4를 하고 ebp가 꺼내진다.

7. (ret) pop eip 를 통해 esp+4를 하고 다음 실행할 명령어의 주소를 꺼내온다.

8. (ret) jmp eip 를 통해 변조된 ebp+4에 있던 주소의 명령어가 실행된다.


- 만약 변조된 ebp+4에 shellcode가 있다면 쉘코드가 실행이 된다.


1. (leave) mov esp, ebp 를 통해서 esp를 ebp로 이동시킨다.



2. (leave) pop ebp 를 통해 변조된 ebp를 꺼낸다. _ esp 는 +4가 된다(pop의 영향)

3. (ret) pop eip 를 한다 여기서 ret는 leave / ret 를 가리킨다. 즉, eip가 leave가 된다. _ esp 는 +4가 된다(pop의 영향)

- 다음 명령어는 leave (mov esp, ebp / pop ebp)



4. (leave) mov esp, ebp 를 통해서 esp가 변조된 ebp로 이동한다.

5. (leave) pop ebp 를 통해 esp+4를 하고 ebp가 꺼내진다. _ 여기서 ebp는 빈칸에 써있던 주소로 이동하게 된다. 



6. (ret) pop eip 를 통해 eip는 shellcode를 가리키게 된다. _ esp 는 +4가 된다(pop의 영향)

8. (ret) jmp eip 를 통해 shellcode가 실행이 된다. 즉, 변조된 ebp+4에 있던 주소의 명령어가 실행된다.





반응형

'Security_ > pwnable' 카테고리의 다른 글

gdb - peda 설치방법  (1) 2022.02.01
[Pwnable] Gadget 구하기  (0) 2022.01.29
[Pwnable] ROP 정리 파일  (0) 2022.01.29
gcc 메모리 보호 기법 해제  (0) 2021.12.16
[Pwnable] pwnable 문서 모음  (0) 2019.01.27

댓글