LEVEL 16: fake ebp
FEBP (Fake EBP)를 사용하라는 힌트가 주어졌다.
Fake EBP란, SFP에 buffer-4(leave의 pop ebp 작업으로, esp+4가 되기에) 주소를 덮어 ebp를 buffer 주소로 옮기고,
ret에 leave 주소를 덮어 함수 에필로그를 재차 수행해 ESP가 Fake EBP로 이동하도록 하는 기법이다.
이번엔 쉘코드를 이용해보려고 한다.
Payload 구성은 다음과 같다.
buffer[40]: &(nop+shellcode)
sfp[4]: Fake EBP
ret[4]: &leaveret (0x80484df)
+ (nop+shellcode)[10025]
gdb에서 main의 leave에 BP를 건 후, 인자로 아래와 같이 준다.
실행 후, ESP부터 스택 영역의 값을 확인해보자.
Fake EBP 주소로 현재 ESP인 0xbffffd360를,
&(nop+shellcode)로 NOP sled 중 적당히 0xbfffd610 정도를 주자.
최종 공격 코드이다.
'[Wargame Write-up] > Lord of Buffer Overflow' 카테고리의 다른 글
| [LoB RedHat 6.2] LEVEL 18: succubus -> nightmare (0) | 2018.08.21 |
|---|---|
| [LoB RedHat 6.2] LEVEL 17: zombie_assassin -> succubus (0) | 2016.10.23 |
| [LoB RedHat 6.2] LEVEL 15: giant -> assassin (0) | 2016.10.19 |
| [LoB RedHat 6.2] LEVEL 14: bugbear -> giant (0) | 2016.10.19 |
| [LoB RedHat 6.2] LEVEL 13: darkknight -> bugbear (0) | 2016.10.19 |