One Gadget
Reading time: 2 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
One Gadget는 system과 "/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
가 로드된 기본 주소를 추가해야 합니다.
tip
One Gadget는 임의 쓰기 2 실행 기술에 큰 도움이 되며, ROP 체인을 단순화할 수 있습니다. 단지 하나의 주소를 호출하고 (요구 사항을 충족해야 함) 하면 됩니다.
ARM64
github 리포지토리는 ARM64가 도구에 의해 지원된다고 언급하지만, Kali 2023.3의 libc에서 실행할 때 가젯을 찾지 못합니다.
Angry Gadget
github 리포지토리에서: OneGadget에서 영감을 받아 이 도구는 파이썬으로 작성되었으며 angr를 사용하여 execve('/bin/sh', NULL, NULL)
를 실행하는 가젯에 대한 제약 조건을 테스트합니다.
OneGadget에서 시도할 가젯이 다 떨어졌다면, Angry Gadget은 시도할 수 있는 복잡한 제약 조건을 가진 더 많은 가젯을 제공합니다!
pip install angry_gadget
angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.