hacktricks/network-services-pentesting/11211-memcache/memcache-commands.md
2023-08-03 19:12:22 +00:00

17 KiB
Raw Blame History

Memcache 命令

☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

命令速查表

来自 https://lzone.de/cheat-sheet/memcached****

支持的命令(官方命令和一些非官方命令)在 doc/protocol.txt 文档中有记录。

遗憾的是,语法描述并不清晰,一个简单的帮助命令列出现有的命令会更好。以下是你可以在 source 中找到的命令概述(截至 2016 年 8 月 19 日):

命令 描述 示例
get 读取值 get mykey
set 无条件设置键

set mykey <flags> <ttl> <size>

<p>在使用 Unix CLI 工具时,请确保使用 \r\n 作为换行符。例如</p> printf "set mykey 0 60 4\r\ndata\r\n"

add 添加新键 add newkey 0 60 5
replace 覆盖现有键 replace key 0 60 5
append 追加数据到现有键 append key 0 60 15
prepend 在现有键前添加数据 prepend key 0 60 15
incr 将数值键的值增加给定的数字 incr mykey 2
decr 将数值键的值减去给定的数字 decr mykey 5
delete 删除现有键 delete mykey
flush_all 立即使所有项目失效 flush_all
flush_all 在 n 秒内使所有项目失效 flush_all 900
stats 打印常规统计信息 stats
打印内存统计信息 stats slabs
打印更高级别的分配统计信息 stats malloc
打印项目信息 stats items
stats detail
stats sizes
重置统计计数器 stats reset
lru_crawler metadump 转储缓存中(大部分)项目的元数据 lru_crawler metadump all
version 打印服务器版本 version
verbosity 增加日志级别 verbosity
quit 终止会话 quit

流量统计

你可以使用以下命令查询当前的流量统计信息

stats

您将获得一个列表,其中包含连接数、字节输入/输出等信息。

示例输出:

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

内存统计

您可以使用以下命令查询当前的内存统计信息:

stats slabs

Memcache Commands

Memcache is a widely used distributed memory caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in memory to reduce the need for repeated database queries.

Basic Commands

SET

Command: set <key> <flags> <exptime> <bytes> [noreply]

Description: Stores the specified value in the cache under the given key. The flags parameter is used to store metadata about the value, such as its data type or compression method. The exptime parameter specifies the expiration time in seconds. The bytes parameter indicates the size of the value in bytes. The optional noreply parameter tells the server not to send a response.

Example: set mykey 0 3600 5\r\nhello\r\n

GET

Command: get <key>

Description: Retrieves the value stored in the cache under the given key.

Example: get mykey

DELETE

Command: delete <key> [noreply]

Description: Deletes the value stored in the cache under the given key. The optional noreply parameter tells the server not to send a response.

Example: delete mykey

Advanced Commands

INCR

Command: incr <key> <value>

Description: Increments the value stored in the cache under the given key by the specified amount. If the value is not numeric, an error is returned.

Example: incr mykey 10

DECR

Command: decr <key> <value>

Description: Decrements the value stored in the cache under the given key by the specified amount. If the value is not numeric, an error is returned.

Example: decr mykey 5

APPEND

Command: append <key> <bytes> [noreply]

Description: Appends the specified value to the value stored in the cache under the given key. The bytes parameter indicates the size of the value to be appended. The optional noreply parameter tells the server not to send a response.

Example: append mykey 5\r\nworld\r\n

PREPEND

Command: prepend <key> <bytes> [noreply]

Description: Prepends the specified value to the value stored in the cache under the given key. The bytes parameter indicates the size of the value to be prepended. The optional noreply parameter tells the server not to send a response.

Example: prepend mykey 5\r\nhello\r\n

CAS

Command: cas <key> <flags> <exptime> <bytes> <cas_unique> [noreply]

Description: Stores the specified value in the cache under the given key, but only if the value has not been modified since the last retrieval. The cas_unique parameter is a unique identifier for the value. The flags, exptime, and bytes parameters have the same meaning as in the set command. The optional noreply parameter tells the server not to send a response.

Example: cas mykey 0 3600 5 12345\r\nhello\r\n

Conclusion

These are some of the basic and advanced commands available in Memcache. Understanding and utilizing these commands can greatly enhance your ability to work with Memcache and optimize the performance of your applications.

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

如果您不确定您的memcached实例是否有足够的内存请始终关注“stats”命令给出的“evictions”计数器。如果您的实例有足够的内存那么“evictions”计数器应该为0或者至少不会增加。

使用了哪些键?

没有内置函数可以直接确定当前使用的键集。但是您可以使用以下命令:

stats items

Command to Determine How Many Keys Exist

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.

stats items

This command will return a list of items with their corresponding statistics. Look for the line that starts with STAT items:, which indicates the total number of items (keys) stored in the Memcache server.

For example:

STAT items:1:number 10

In this example, the Memcache server has a total of 10 keys stored.

stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END

这至少有助于查看是否使用了任何键。要从已经执行了memcache访问的PHP脚本中转储键名称您可以使用来自100days.de的PHP代码。

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥