본문 바로가기

전체 글145

pwnable.kr [Rookiss] fix 보호되어 있는 글 입니다. 2021. 4. 2.
[MEMO] SIP 설정 및 해제 [SIP 설정(enable) 및 해제(disable)]복구모드로 부팅 (부팅 시 command + R) 후 터미널 실행# csrutil enable # reboot or # csrutil disable # reboot * SIP 해제 후 사용하다가 다시 설정하는 것은 복구모드로 재진입하지 않고, # csrutil clear 후 재부팅해도 됨 ** # csrutil status로 현재 상태 확인 가능 2020. 9. 3.
pwnable.kr [Rookiss] echo1 보호되어 있는 글 입니다. 2020. 8. 3.
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.
gdb.attach() with pwntools 익스를 짜다보면 gdb로 attach하여 디버깅하고 싶을 때가 있다. 이 때 사용할 수 있는 방법에 대해 쓰려고 한다. 첫 번째 방법은 exploit 코드 중간에 input() 등의 함수를 넣어두고, gdb에서 직접 attach [pid] 와 같이 붙은 뒤에 브레이크포인트를 걸고 continue하는 방법이다. 두 번째 방법은 pwntools에서 제공하는 pwnlib.gdb를 이용하는 것이다. (attach() 이용) 사실 같은 방법이지만, 두 번째 방법을 이용하는 것이 조금 더 간편하다. 하지만 도커 등의 환경에서 작업하는 경우에는 아마 첫 번째 방법이 더 편할 수도 있으니 상황에 맞게 이용하면 된다. 우선 첫 번째 방법을 기준으로 설명하려고 한다. 1. 먼저 exploit 코드 중간에 raw_input.. 2019. 12. 23.
pwnable.kr [Hacker's Secret] unexploitable 보호되어 있는 글 입니다. 2019. 11. 27.
pwnable.kr [Rookiss] md5 calculator 보호되어 있는 글 입니다. 2019. 11. 27.