虽然经常听到这个知识点,某比赛还遇到过,但当时属实是对这方面的理解太弱,没有太上心,觉得不是自己马上需要接触的就没去搞,总之就是找借口摸了,嘛,现在对服务器上的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
127.0.0.1:6379>set name muhua OK 127.0.0.1:6379>set fake_flag flag{f4ke_f1ag} OK
127.0.0.1:6379>object encoding fake_flag "embstr"
127.0.0.1:6379>select 13 127.0.0.1:6379[13]>
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
公网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
|