exit함수로 실행흐름을 바꾸는 방법이있다. FULL RELRO거나 PIE base는 모르지만 libc base는 알때 사용하기 좋은 공격 기법인 것 같다!
main함수에서 ret를 하게 되면 __libc_start_main+231 로 간다. 그리고 exit함수를 호출하게 되는데
exit함수는 내부적으로 __run_exit_handlers -> _dl_fini -> _rtld_lock_lock_recursive(_dl_load_lock) 이런 실행 흐름을 가지고 있다.
따라서 _rtld_lock_lock_recursive를 system으로 바꾸고
_dl_load_lock을 sh로 바꾸면 쉘이 실행될 것이다.
exit가 뭔가 하기에 참 좋은 함수인거 같다
Linux command (0) | 2020.08.04 |
---|---|
FMT (0) | 2020.07.06 |
malloc_hook을 one_shot으로 덮었을 때 (0) | 2019.08.26 |
입력 함수 입력받지 못하는 값 정리 (0) | 2019.08.15 |
environ 으로 stack leak 하기! (0) | 2019.08.09 |