One Gadget

HackTricks 지원

기본 정보

One Gadgetsystem 및 **"/bin/sh"**를 사용하는 대신 셸을 획득할 수 있게 해줍니다. One Gadget은 libc 라이브러리 내에서 셸을 획득할 수 있는 방법(execve("/bin/sh"))을 단 하나의 주소로 찾아냅니다. 그러나 일반적으로 몇 가지 제약 조건이 있으며, 가장 일반적이고 쉽게 피할 수 있는 것은 [rsp+0x30] == NULL과 같은 것입니다. RSP 내의 값을 제어할 수 있기 때문에 더 많은 NULL 값을 보내 제약 조건을 피할 수 있습니다.

ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100

One Gadget이 가리키는 주소에는 libc가 로드된 기본 주소를 더해야합니다.

One Gadget은 임의 쓰기 2 실행 기법에 큰 도움을 주며 ROP 체인을 간소화할 수 있습니다. 하나의 주소만 호출하면 되며 (요구 사항을 충족해야 함).

ARM64

github 레포지토리는 ARM64를 지원한다고 언급하지만 Kali 2023.3의 libc에서 실행할 때 어떤 가젯도 찾지 못합니다.

Angry Gadget

github 레포지토리에서: OneGadget에서 영감을 받은 이 도구는 파이썬으로 작성되었으며 angr를 사용하여 execve('/bin/sh', NULL, NULL)를 실행하는 가젯에 대한 제약 조건을 테스트합니다. One Gadget에서 시도할 가젯이 부족하다면, Angry Gadget은 더 복잡한 제약 조건을 가진 많은 가젯을 제공합니다!

pip install angry_gadget

angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so
HackTricks 지원

Last updated