One shot gadget 을 찾는법
- 간단한 방법으로는 one_gadget을 이용하여 찾는다.
one_gadget (libc_version)
ex) one_shot libc.so.6
이를 통해 libc_base + one_gadget offset을 return address 에 삽입하면 shell이 동작하게 된다.
libc의 base주소를 구하는 방법
objdump -D (libc) | grep "stdout"
을 이용하면 stdout의 offset 구할 수 있다.- gdb에서 실행시킨 후
print stdout
-vmmap
을 이용하면 구할 수 있다.
하지만 필자는 워게임을 풀며, 아래의 방법에서 구한 offset이 달라 고생했는데 아직 이유를 찾지 못하였다.