본문 바로가기

[Wargame Write-up]/Lord of Buffer Overflow

[LoB RedHat 6.2] LEVEL 16: assassin -> zombie_assassin

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 정도를 주자.

 

 

 

최종 공격 코드이다.