#본 포스팅은 글쓴이가 까먹었을때 다시 보기 위함으로 텍스트로 정리함
fake ebp 기법을 알려면 먼저 스택의 이해와 leave-ret 명령어의 이해가 필수적이다
1. 먼저 sfp와 ret를 overwrite할수 있는 취약점을 탐색
2. leave-ret GadGet의 주소를 알고
3. payload를 작성
Payload = shellcode 시작주소(buf+4) + shellcode + nop(버퍼의 크기 - shellcode) + &(buf+4) + leave-ret GadGet
================================================
leave
-mov esp ebp
-pop ebp
ret
-pop eip
-jmp eip
esp, ebp 레지를 중심으로 정리하면
leave 명령어를 수행하게 되면 payload 상에서 조작한 sfp를 pop하여 ebp에 저장하게 되고 esp 는 +4가 되어 ret를 가리키게 됨
ret 명령어가 수행되며 leave-ret GadGet으로 pop & jmp 하여 한번 더 수행
leave 명령어가 재수행되며 조작하여 저장된 ebp가 esp로 복사된다
조작한 ebp가 buf+4의 주소였기에 esp = &(buf+4)가 되며 pop ebp를 하며 esp는 buf의 시작주소를 가리킴
ret 명령어가 재수행되며 buf의 가장 앞에있던 shellcode의 시작주소가 pop되어 그 주소로 점프하여
쉘 실행
'보안 스터디 > system' 카테고리의 다른 글
[Ubuntu] 윈도우, 우분투 파일공유 (0) | 2018.11.14 |
---|---|
Buffer OverFlow (0) | 2018.11.09 |
peda-gdb (0) | 2018.11.09 |
[Linux] tar 압축 명령어 (0) | 2018.11.09 |
Linux 명령어 (0) | 2018.09.14 |