虽然经常听到这个知识点,某比赛还遇到过,但当时属实是对这方面的理解太弱,没有太上心,觉得不是自己马上需要接触的就没去搞,总之就是找借口摸了,嘛,现在对服务器上的docker之类的基本也会使用了,所以决定搭一下环境,说不定顺便还能复现一些点

环境搭建

还是使用自己的服务器,按照师傅们写的教程走

简单查一下镜像:

docker search redis
第一个就叫redis,直接上

拉取镜像:

docker pull redis

建个文件夹进去,似乎需要映射文件和文件夹,下载个文件:

1
wget http://download.redis.io/redis-stable/redis.conf

然后起一个容器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run -p 6379:6379 \
-v $PWD/data:/data \
-v $PWD/redis.conf:/etc/redis/redis.conf \
--name redis \
-d --restart=always redis:latest redis-server \
--appendonly yes --requirepass "yourpassword"


-p 表示端口映射
-v 表示宿主机和容器之间的文件映射
--name 表示docker容器的名字
-d 表示在后台运行,并且打印容易id
--restart=always 表示可以自启动
redis:latest 启动容器的镜像
--appendonly yes 表示redis持久化
--requirepass 表示设置的密码

使用docker搭建redis

嘛,总之密码的部分自己改一下,其他部分就这样也无妨啦

环境已经起了,接着进环境试试,

docker exec -it redis redis-cli

先使用auth指令输入密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>auth yourpassword
OK
# 输入PING指令检查是否连上,返回PONG说明连上
>PING
PONG

# 存点数据:
127.0.0.1:6379>set name muhua
OK
127.0.0.1:6379>set fake_flag flag{f4ke_f1ag}
OK
# 数据存储是依靠键,这里的键key是fake_flag,而跟在后面的字符串是值
127.0.0.1:6379>object encoding fake_flag
"embstr"
# object用于查看数据类型
127.0.0.1:6379>select 13
127.0.0.1:6379[13]>
# select用于改变数据库,数据库总共16个,使用索引来切换,使用select之后数据库的索引就会显示出来了
127.0.0.1:6379[13]>set real_flag flag{congratulation}

远程连接

接着再建一个环境,因为本地没有redis-cli指令:

1
2
3
4
5
6
docker run -p 8085:6379 \
-v $PWD/data:/data \
-v $PWD/redis.conf:/etc/redis/redis.conf \
--name redis2 \
-d --restart=always redis:latest redis-server \
--appendonly yes --requirepass "test2"

进入远程测试环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>docker exec -it redis2 /bin/bash
>redis-cli -h 公网IP
# 还是先输密码
公网IP:6379>auth yourpassword
# 可以查看版本
公网IP:6379>info
#接着使用keys查看当前库所有的键
公网IP:6379>keys *
"fake_flag"
"muhua"
公网IP:6379>get fake_flag
"flag{f4ke_f1ag}"
# 切换库
公网IP:6379>select 13
# 查询键并获取键对应的值
公网IP:6379>keys *
"real_flag"
公网IP:6379>get real_flag
"flag{congratulation}"

更多指令

1
2
3
4
flushdb //清空当前库数据
flushall // 清空所有数据库
monitor // 监视服务端收到的信息
redis-cli -h 公网IP -p 端口 -a 密码 //远程连接完整方式

如果不想在起容器的时候设置,也可以在下载的文件中配置:

1
2
3
注释掉bind 127.0.0.1,取消和本机的绑定
修改protected-mode yes为protected-mode no,取消保护模式
解注释requirepass foobared,将密码修改为自定义的密码如requirepass 123456
Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

muhua WeChat Pay

WeChat Pay

muhua Alipay

Alipay

muhua PayPal

PayPal