hacktricks/network-services-pentesting/11211-memcache/memcache-commands.md

240 lines
15 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# Komendy Memcache
2023-02-16 13:29:30 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-02-03 01:15:34 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](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** 🐦 [**@carlospolopm**](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**.
2023-02-16 13:29:30 +00:00
</details>
2024-02-11 01:46:25 +00:00
## Arkusz oszustw komend
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
**Z** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Obsługiwane komendy (oficjalne i nieoficjalne) są udokumentowane w dokumencie [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Niestety opis składni nie jest zbyt klarowny, a prosta komenda pomagająca wypisać istniejące komendy byłaby o wiele lepsza. Oto przegląd komend, które można znaleźć w [źródle](https://github.com/memcached/memcached) (stan na 19.08.2016):
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
| Komenda | Opis | Przykład |
2023-03-05 22:20:47 +00:00
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2024-02-11 01:46:25 +00:00
| get | Odczytuje wartość | `get mykey` |
| set | Ustawia klucz bezwarunkowo | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>Upewnij się, że używasz \r\n jako znaków nowej linii przy korzystaniu z narzędzi Unix CLI. Na przykład&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | Dodaje nowy klucz | `add newkey 0 60 5` |
| replace | Nadpisuje istniejący klucz | `replace key 0 60 5` |
| append | Dołącza dane do istniejącego klucza | `append key 0 60 15` |
| prepend | Dodaje dane na początku istniejącego klucza | `prepend key 0 60 15` |
| incr | Zwiększa wartość numerycznego klucza o podaną liczbę | `incr mykey 2` |
| decr | Zmniejsza wartość numerycznego klucza o podaną liczbę | `decr mykey 5` |
| delete | Usuwa istniejący klucz | `delete mykey` |
| flush\_all | Natychmiast unieważnia wszystkie elementy | `flush_all` |
| flush\_all | Unieważnia wszystkie elementy za n sekund | `flush_all 900` |
| stats | Wyświetla ogólne statystyki | `stats` |
| | Wyświetla statystyki pamięci | `stats slabs` |
| | Wyświetla statystyki alokacji na wyższym poziomie | `stats malloc` |
| | Wyświetla informacje o elementach | `stats items` |
2023-03-05 22:20:47 +00:00
| | | `stats detail` |
| | | `stats sizes` |
2024-02-11 01:46:25 +00:00
| | Resetuje liczniki statystyk | `stats reset` |
| lru\_crawler metadump | Zrzutuje (większość) metadane dla (wszystkich) elementów w pamięci podręcznej | `lru_crawler metadump all` |
| version | Wyświetla wersję serwera | `version` |
| verbosity | Zwiększa poziom logowania | `verbosity` |
| quit | Kończy sesję | `quit` |
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
#### Statystyki ruchu <a href="#traffic-statistics" id="traffic-statistics"></a>
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Możesz zapytać o bieżące statystyki ruchu za pomocą komendy
2023-02-16 13:29:30 +00:00
```
stats
```
2024-02-11 01:46:25 +00:00
Otrzymasz listę, która przedstawia liczbę połączeń, bajtów wejścia/wyjścia i wiele innych.
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Przykładowy wynik:
2023-02-16 13:29:30 +00:00
```
STAT pid 14868
STAT uptime 175931
STAT time 1220540125
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 620.299700
STAT rusage_system 1545.703017
STAT curr_items 228
STAT total_items 779
STAT bytes 15525
STAT curr_connections 92
STAT total_connections 1740
STAT connection_structures 165
STAT cmd_get 7411
STAT cmd_set 28445156
STAT get_hits 5183
STAT get_misses 2228
STAT evictions 0
STAT bytes_read 2112768087
STAT bytes_written 1000038245
STAT limit_maxbytes 52428800
STAT threads 1
END
```
2024-02-11 01:46:25 +00:00
#### Statystyki pamięci <a href="#memory-statistics" id="memory-statistics"></a>
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Możesz zapytać o bieżące statystyki pamięci, używając
2023-02-16 13:29:30 +00:00
```
stats slabs
```
2024-02-11 01:46:25 +00:00
# Memcache Commands
Memcache is an in-memory key-value store that is commonly used for caching data in web applications. It is a popular choice for improving performance and reducing database load.
## Basic Commands
### SET
**Description:** Sets the value of a key in the cache.
**Syntax:** `set <key> <flags> <exptime> <bytes> [noreply]`
**Example:** `set mykey 0 3600 5\r\nhello\r\n`
### GET
**Description:** Retrieves the value of a key from the cache.
**Syntax:** `get <key>`
**Example:** `get mykey`
### DELETE
**Description:** Deletes a key from the cache.
**Syntax:** `delete <key> [noreply]`
**Example:** `delete mykey`
## Advanced Commands
### INCR
**Description:** Increments the value of a key by a specified amount.
**Syntax:** `incr <key> <value>`
**Example:** `incr mykey 10`
### DECR
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
**Description:** Decrements the value of a key by a specified amount.
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
**Syntax:** `decr <key> <value>`
**Example:** `decr mykey 5`
### APPEND
**Description:** Appends data to the value of a key.
**Syntax:** `append <key> <bytes> [noreply]`
**Example:** `append mykey 5\r\nworld\r\n`
### PREPEND
**Description:** Prepends data to the value of a key.
**Syntax:** `prepend <key> <bytes> [noreply]`
**Example:** `prepend mykey 5\r\nhello\r\n`
### CAS
**Description:** Compares and swaps the value of a key.
**Syntax:** `cas <key> <flags> <exptime> <bytes> <cas_unique> [noreply]`
**Example:** `cas mykey 0 3600 5 12345\r\nhello\r\n`
### STATS
**Description:** Retrieves statistics about the memcache server.
**Syntax:** `stats [command]`
**Example:** `stats`
## Conclusion
These are some of the most commonly used commands in memcache. Understanding how to use them effectively can greatly enhance your ability to work with this powerful caching tool.
2023-02-16 13:29:30 +00:00
```
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
STAT 1:total_pages 1
STAT 1:total_chunks 13107
STAT 1:used_chunks 13106
STAT 1:free_chunks 1
STAT 1:free_chunks_end 12886
STAT 2:chunk_size 100
STAT 2:chunks_per_page 10485
STAT 2:total_pages 1
STAT 2:total_chunks 10485
STAT 2:used_chunks 10484
STAT 2:free_chunks 1
STAT 2:free_chunks_end 10477
[...]
STAT active_slabs 3
STAT total_malloced 3145436
END
```
2024-02-11 01:46:25 +00:00
Jeśli nie jesteś pewien, czy masz wystarczającą ilość pamięci dla swojej instancji memcached, zawsze zwracaj uwagę na liczniki "evictions" podane przez polecenie "stats". Jeśli masz wystarczającą ilość pamięci dla instancji, licznik "evictions" powinien wynosić 0 lub przynajmniej nie zwiększać się.
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
#### Które klucze są używane? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Nie ma wbudowanej funkcji, która bezpośrednio określa bieżący zestaw kluczy. Jednak można użyć
```
stats items
```
### Command to Determine How Many Keys Exist
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
To determine the number of keys that exist in a Memcache server, you can use the `stats` command. This command provides statistics about the server, including the total number of keys stored.
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
```bash
2023-02-16 13:29:30 +00:00
stats items
```
2024-02-11 01:46:25 +00:00
This command will return a list of items with their corresponding statistics. Look for the line that starts with `STAT items:`, which will provide the total count of keys.
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
```plaintext
STAT items:1:number 10
```
In this example, the total number of keys is 10.
2023-02-16 13:29:30 +00:00
```
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
```
2024-02-11 01:46:25 +00:00
To dump the key names from a PHP script that already does the memcache access, you can use the PHP code from [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
2023-02-16 13:29:30 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-02-16 13:29:30 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-02-03 01:15:34 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](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** 🐦 [**@carlospolopm**](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) github repos.
2023-02-16 13:29:30 +00:00
</details>