본문 바로가기

꿀팁!

FPO 정리 잘 되어 있는 곳

https://hackstoryadmin.tistory.com/entry/FPO-Frame-Pointer-Overflow

 

FPO (Frame Pointer Overflow)

안녕하세요. FPO (Frame Pointer Overflow) 에 대해 포스팅을 시작하겠습니다. 먼저 FPO 란? SFP의 1byte를 overflow (overwrite) 하여 실행코드가 있는 원하는 주소로 eip 를 변조하는 기법입니다. 이를 학습하기..

hackstoryadmin.tistory.com

 

1. 서브함수가 존재하고 실행되어야함

2. sfp를 1바이트라도 덮을수있어야함

 

서브함수에서 sfp를 변조시키고 leave과정에서 pop ebp를 하게되는데 ebp가 esp값으로 이동하므로 변조된 sfp위치로 ebp가 이동됨 ret를 통해 서브함수를 실행한 함수에서 정상적으로 동작을 한 후 다시 leave를 하게되는데 여기서 mov esp, ebp를 통해 서브 함수에서 변조되었던 ebp값으로 esp가 이동 pop ebp를 하면서 변조된 esp는 ebp+4값이 되기에 주소계산에서 원하는 값 -4를 해주는것 이후 ret의 pop eip jmp eip를 통해 esp위치의 값으로 이동하여 실행되는것