[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 |
댓글