One shot example

형준·2023년 5월 10일
0

One shot gadget

  • One Shot gadget을 이용하면 한번에 shell을 획득할 수 있다.
  • 이 가젯은 libc안에 있으며, libc_base를 구하여 실제 oneshot주소를 실행시켜 동작할 수 있다.

One shot gadget 을 찾는법

  • 간단한 방법으로는 one_gadget을 이용하여 찾는다.
    one_gadget (libc_version)

ex) one_shot libc.so.6

실행 후 모습

  • constraints : 실행하기 위한 조건 (조건이 충족되어야 쉘이 실행됨)
  • 현재 4개의 one_gadget offset을 발견할 수 있었다.

이를 통해 libc_base + one_gadget offset을 return address 에 삽입하면 shell이 동작하게 된다.

libc의 base주소를 구하는 방법

  • objdump -D (libc) | grep "stdout" 을 이용하면 stdout의 offset 구할 수 있다.
  • gdb에서 실행시킨 후 print stdout - vmmap을 이용하면 구할 수 있다.

하지만 필자는 워게임을 풀며, 아래의 방법에서 구한 offset이 달라 고생했는데 아직 이유를 찾지 못하였다.


다음에는 관련 wargame을 풀며 oneshot_gadget을 활용해 보자
profile
>_0v

0개의 댓글