【HTB】Redeemer
介绍
目录会显示在文章右侧。
一、关卡Redeemer
先创建实例:
TASK1
问题是:机器上打开了哪个TCP端口?
使用nmap命令扫描端口(如果以下命令效果不佳,可以添加 -Pn):
nmap -sS -T4 -p0-65535 10.129.26.40
可知开放的端口号为6379/tcp。
此处的答案为:6379
TASK2
问题是:在机器上打开的端口上运行哪个服务?
使用命令:
nmap -A -p6379 10.129.26.40
可以得知:打开的6379/tcp端口上 运行的服务为redis数据库服务,对应的Redis版本号为5.0.7。
此处的答案为:redis
TASK3
问题是:Redis是什么类型的数据库?从下列选项中选择:(i)内存数据库;(ii)传统数据库
Redis数据库是内存数据库,同时也是非关系型数据库。
答案: In-memory Database
TASK4
问题是:哪个命令行工具是用来与Redis服务器交互的?
在linux中使用redis-cli命令行工具,来实现与Redis服务器的交互,redis-cli的安装命令为:
sudo apt install redis-cli
使用参数-h加上目标机器IP,就是redis-cli用来连接目标主机的命令,此处没有密码,直接连接即可:
redis-cli -h 10.129.26.40 -p 6379
//该命令中的-h用于指定ip或者主机名
//-p 6379用于指定连接的端口为6379(此处可以不加指定端口,即去掉-p 6379也可以)
成功连接后,使用命令:
info
可获取Redis服务器的信息和统计信息。
答案:redis-cli
TASK5
问题是:Redis命令行工具使用哪个标志来指定主机名?
由上文可知,此处的答案为:-h
TASK6
问题是:连接Redis服务器后,使用哪条命令获取Redis服务器的信息和统计信息?
由上文可知,此处的答案为:info
TASK7
问题是:目标机器上使用的Redis服务器的版本是什么?
由上文的扫描结果可知,目标机器使用的Redis服务器的版本是5.0.7。
答案:5.0.7
TASK8
问题是:在Redis中哪个命令是用来选择所需的数据库?
在成功连接redis数据库并通过info命令获取数据库信息后,通过查看Keyspace信息模块,可以得知该数据库中有一个数据库名为db0(该数据库索引为0),keys=4,使用命令:
select 0
//select+index(索引号,此处选择0号索引)表示选择索引为0的数据库
此处的答案为:select
TASK9
问题是:在索引为0的数据库中有多少个键?
由上文可知db0数据库的keys=4,所以索引为0的数据库db0有4个键。
答案:4
TASK10
问题是:哪个命令用于获取数据库中的所有键?
由上文可知,使用select 0选择数据库之后,使用命令:
keys *
可获取该数据库中的所有键。
此处答案为:keys *
SUBMIT FLAG
通过TASK10中命令获取数据库的所有键,可以发现有一个键为flag,使用get命令 可查看flag值(tips-使用命令exit退出redis服务器连接):
get flag
//查看redis数据库中flag键的键值
提交flag,成功通关!!
二、理论补充
Redis也可通过图形化工具管理。
使用phpstudy自带的工具,开启 redis 服务,安装RedisClient客户端管理软件,输入IP与端口号 即可连接:
Redis数据库的数据类型
redis 可以创建五种数据类型:
1.string(字符串)
2.list(列表),Redis 列表是简单的字符串列表,按照插入顺序排序
2.set(集合)是 String 类型的无序集合,集合成员是唯一的,不能出现重复数据
4.hash(哈希)是一个 string 类型的 field(字段)和 value(值)的映射表,适合存储对象
5.zset(sorted set:有序集合),和 set 一样也是 string 类型元素的集合,且不允许重复的成员,区别就是每个元素都会关联一个 double 类型的分数(可以重复),redis 正是通过分数来为集合中的成员进行从小到大的排序,即使写入数据的时候 打乱顺序写,刷新后也会重新按排序显示。
Redis数据库的简单使用
redis 默认有16个数据库,编号为0~15。
Redis服务器中每个数据库都由 redisDB 结构表示(默认16个库)。其中,redisDB 结构的 dict 字典保存了数据库中所有的键值对,这个字典被称为键空间(keyspace)。16个数据库,独立在各自的键空间即key space中。
这里的keyspace可以看作是数据库(类似于mysql中的database),通过 info 命令可以查看redis具体信息,从而也可以看到keyspace信息模块,命令的使用效果见TASK8中的示意图;
使用select关键字加上数据库索引号,可以选择数据库;
使用 keys * 命令可以列出所有的键,最后使用 get 命令可以获取键对应的值。
使用实例见上文的使用情况即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通