one_gadget
-
Oneshot gadgetCTF/TOOL 2021. 1. 8. 20:24
PRELIMINARY 서론 oneshot gadget(magic gadget)이란 해당 gadget 하나만을 이용하여 shell을 획득할 수 있는 gadget이다. [1] 대표적으로는 execve("/bin/sh") 등이 이에 해당하는데, 신기하게도 rdi에 "/bin/sh"의 offset 주소를 전달하고 execve 함수를 실행하는 코드가 libc 내부에 존재한다. 위와 같이 "/bin/sh"의 주소를 레지스터에 전달하는 부분을 검색해보자. 만약 e6e73 부분의 코드를 실행한다면 함수의 처음 세 인자를 저장하는 rdi, rsi, rdx에 순서대로 값이 전달된 후 execve 함수가 실행될 것이다. 추가로, 위 코드를 통해 쉘을 취득하려면 r10과 r12가 NULL이어야 한다. 그렇다면 이러한 코드의 ..