본문 바로가기

Pwnable3

SROP (Sigreturn Oriented Programming 보호되어 있는 글 입니다. 2020. 2. 9.
Return to dl resolve return to dl resolve는 lazy binding을 하는 상황에서 이용할 수 있는 기법이다. 이번 글에서는 codegate의 yocto라는 문제를 가지고 ret2dl 기법에 대해 소개하고 문제 풀이를 해보려고 한다. # Lazy Binding이란 - Dynamic Linking 방식에서 외부 함수 호출시, 호출 시점에 해당 함수의 주소를 알아오는 것 - dynamic linker 내의 _dl_runtime_resolve()를 통해 이루어짐 - _dl_runtime_resolve() -> _dl_fixup() -> _dl_lookup_symbol_x() -> do_lookup_x() -> check_match() Dynamic linking 방식에서 사용하는 방법이기 때문에, 우선 바이너리에 .. 2019. 12. 28.
Fake EBP fake ebp 기법은 쉽게 말하면 단어 그대로 ebp에 fake 값을 넣음으로써 eip를 조작하는 기법이다. 보통 ROP를 할 때 (32bit를 기준으로) ret+8 부터 인자 값을 맞춰준다. 이 기법의 경우 ret까지만 덮을 수 있을 때 이용되며, leave; ret 가젯을 이용한다. 쉽게 이야기하기 위해 fake 값이라고 표현했지만, 물론 아무 값이나 넣는 것이 아니기에 맞춰주어야 할 부분들이 있다. leave; ret에 대해 설명하며 어떤 값들을 넣어주어야하는지도 함께 보려고 한다. 우선 leave와 ret은 함수의 에필로그에 해당한다. 에필로그를 확인하기 위해 'Hello World'를 출력하는 간단한 코드를 작성하면, 아래와 같이 함수의 마지막 부분에 leave; ret;이 존재하는 것을 볼 .. 2019. 12. 24.