简简单单
日常扫描
全端口扫描,经过漫长的等待,发现了 6379 端口开放了 redis
服务
┌──(root💀kali)-[~]
└─# nmap -sS -sV 10.129.79.58 -p-
PORT STATE SERVICE VERSION
6379/tcp open redis Redis key-value store 5.0.7
Redis 简介
Redis
是非关系型数据库
关系型数据库:是指采用了关系模型来组织数据的数据库,关系模式就是二维表格模型,主要代表:SQL Server,Oracle,Mysql,PostgreSQL
非关系型数据库(NoSQL):以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可,主要代表:MongoDB,Redis、CouchDB
如何连接
redis-cli
使用 redis-cli
命令行工具连接管理 redis
服务端 ,安装
sudo apt install redis-cli
连接,使用 -h
是查看帮助页面,而加上目的 IP ,就是连接主机的命令,没有密码,直接连接
┌──(root💀kali)-[~]
└─# redis-cli -h 10.129.79.58
10.129.79.58:6379>
图形化工具
图形化管理工具,也是一样的,切换比较麻烦,直接在本机测试了,我们使用 phpstudy
自带的工具来演示,开启 redis
服务,安装 RedisClient
客户端管理软件 ,输入 IP 与端口号,连接
数据类型
redis
可以创建五种数据类型:
string
(字符串)
list
(列表),Redis
列表是简单的字符串列表,按照插入顺序排序
set
(集合)是 String
类型的无序集合,集合成员是唯一的,不能出现重复数据
hash
(哈希)是一个 string
类型的 field
(字段)和 value
(值)的映射表,适合存储对象
zset
(sorted set
:有序集合),和 set
一样也是 string
类型元素的集合,且不允许重复的成员,区别就是每个元素都会关联一个 double
类型的分数(可以重复),redis
正是通过分数来为集合中的成员进行从小到大的排序,如下,我肯定是打乱顺序写的,刷新后显示排序后的
简单使用
redis
默认是 16 个数据库,编号 0~15
服务器中每个数据库都由 redisDB 结构表示(默认16个库)。其中,redisDB 结构的 dict 字典保存了数据库中所有的键值对,这个字典被称为键空间(key space)。
而16个库,独立在各自的键空间(key space)中
这里的 key space
就可以看作是数据库,我们通过 info
命令查看
10.129.79.58:6379> info
...
# Keyspace
db0:keys=4,expires=0,avg_ttl=0
(0.57s)
可以看到只有一个 db0
数据库,使用 select
关键字选择数据库
10.129.79.58:6379> select 0
使用 keys
命令列出所有的键
10.129.79.58:6379> keys *
1) "numb"
2) "flag"
3) "temp"
4) "stor"
使用 get
命令获取键对应的值
10.129.79.58:6379> get flag
"03e1d2b376c37ab3f5319922053953eb"
数据库利用基本是写入后门,创建管理员,暴破用户账户这几类,大同小异
后放答案
6379
redis
In-memory Database
redis-cli
-h
info
5.0.7
select
4
keys *