39_WAF的概念、功能,ModSecurity部署配置、LAMP环境部署、Ubuntu搭建DVWA靶机测试、测试WAF防御、OWASP规则集的部署

news2024/9/20 1:14:19

一、WAF的概念

WAF( Web Application Firewall ),即Web应用防火墙

  • 通过执行一系列HTTP/HTTPS(应用层的协议)的安全策略为Web应用提供保护的一种网络安全产品。
  • 增加攻击者的难度和成本,但不是100%安全。
  • 工作在应用层。

WAF的优势

二、WAF的功能

  • SQL Injection (SQLi):阻止SQL注入
  • Cross Site Scripting (XSS):阻止跨站脚本攻击
  • Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
  • Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击
  • Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
  • PHP Code Injectiod:阻止PHP代码注入
  • Metadata/Error Leakages:阻止源代码/错误信息泄露
  • HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
  • HTTPoxy:阻止利用远程代理感染漏洞进行攻击
  • Shellshock:阻止利用Shellshock漏洞进行攻击
  • Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
  • Scanner Detection:阻止黑客扫描网站
  • Project Honey Pot Blacklist:蜜罐项目黑名单
  • GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

三、WAF的分类

1.硬件设备类

以硬件的形式部署在链路中,支持多种部署方式,当串联到链路中时可以拦截恶意流量,在旁路监听时只记录攻击,不拦截。独立部署。

绿盟、安恒、铱迅、天融信、深信服、启明星辰、知道创宇、F5 BIG-IP

部署位置

2.软件产品类

以软件的形式安装在服务器上,可以直接检测服务器是否存在webshell,是否有文件被创建等。 一般与服务器部署在一起。(缺点是占用服务器的资源,优点是便宜适合小公司)

D盾,云锁,网防G01,安全狗,护卫神,智创,悬镜,UPUPW,安骑士。

不同waf的拦截页面

https://zhuanlan.zhihu.com/p/335602174?utm_id=0

3.基于云的WAF

通过配置NS或CNAME记录,使得对网站的请求报文优先经过WAF主机,经过WAF主机过滤后,将被认为无害的请求报文再发送给实际网站服务器进行请求,可以认为是自带防护功能的CDN。

安全宝、创宇盾、玄武盾、腾讯云(T-Sec Web 应用防火墙)、百度云(应用防火墙 WAF)、西部数码、阿里云盾、奇安信网站卫士。

优势:价格低廉,不用部署

云WAF示意图:

https://www.tmooc.cn→DNS服务器,根据域名查询得到Web服务器的IP地址。浏览器连接并访问Web服务器。

https://www.tmooc.cn→DNS服务器,根据域名查询得到WAF的IP地址。浏览器将请求发送给WAF,经过WAF检查和过滤后,请求才会到Web服务器。响应也是一样,数据通过WAF响应回浏览器。

       云waf解析流程: 部署了云waf的网站,DNS服务器解析的时候解析的是云waf的地址,这样就会经过云waf再到web服务器。

        所以现在很多的web服务器怕被绕过,就禁止IP访问,一定要通过域名访问,

四、ModSecurity

1 ModSecurity的概念

  • ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。软件产品。
  • 它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护。
  • 中文社区:http://www.modsecurity.cn/

选它来测试,以下原因,江湖地位、免费、开源、跨平台,很多同类产品都参考了它的设计

2 ModSecurity的工作过程

•解析HTTP请求内容

•将解析后的内容与规则匹配

•根据规则进行处理

•日志记录

        modsecurity的详细工作过程:共五个阶段记录,前两个阶段处理请求头、请求体,后两个阶段处理响应头、响应体,最后一个阶段记录信息,然后删掉、等待最后重新轮回。

3 ModSecurity规则

ModSecurity规则结构

SecRule VARIABLES OPERATOR [ACTIONS]

SecRule:ModSecurity主要的指令,用于创建安全规则

VARIABLES:变量,规定了安全规则针对的对象(上哪找?)

OPERATOR:操作符,定义安全规则的匹配条件(怎么找?)

ACTIONS:响应动作,定义数据包被规则命中后的响应动作(做什么?)

常见变量VARIABLES(对象)

ARGS:所有请求参数

FILES:所有文件名称

REQUEST_HEADERS:请求数据头部

常见操作符OPERATOR(条件)

@rx:正则表达式

@streq:字符串相同

@ipmatch:IP相同

@contains:包含字符串

常见响应动作ACTIONS(处理)

deny:停止规则处理并拦截此次访问

pass:规则匹配成功后,仍继续使用下一个规则进行处理(通过

id:定义规则编号( id必须进行配置,且必须是数字)

severity:定义事件严重程度

phase:配置规则的处理阶段 (1~5)

t:调用转换函数

block:用于阻止访问,但不指定阻止的具体执行方式

常见转换函数

lowercase:所有字符转换为小写

removeNulls:从输入数据中删除所有空字节

removeWhitespace:从输入数据中删除所有空白字符

trim:删除输入字符串左侧与右侧的所有空格


4. ModSecurity规则示例

•防XSS攻击

SecRule ARGS|REQUEST_HEADERS "@rx<script>" "id:001,msg:'XSS Attack',severity:ERROR, deny, status:404"

5.ModSecurity部署配置

•部署环境

OS平台:Ubuntu 16(可自行搭建个Ubuntu 16完成前三个步骤,或需要我这个虚拟机的可以私聊我给你发)

服务器:Apache2

首先,解压Ubuntu 16,VM打开(跳出弹框就获取所有权),

        打开快照管理后会看到有很多快照,接下来我从第三个快照开始从新搭建一遍

从已安装apt更新源快照开始操作,点击第三个快照,转到,我已移动该虚拟机,

1.更新apt源(因为我这个普通用户,$符,所以命令前我都加sudo)

sudo apt-get update

2.安装apache2
sudo  apt-get  -y  install  apache2  apache2-dev
3.遇到错误(没遇到则忽略)

使用sudo时报错:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)

E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?

解决:

sudo rm /var/lib/dpkg/lock-frontend

如果还出来错,删除那个文件即可,比如:

E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)

E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?

解决:

sudo rm /var/lib/dpkg/lock

然后就可以使用了

4.安装modsecurity
sudo  apt-get  -y  install  libxml2  libxml2-dev  libxml2-utils  libaprutil1  libaprutil1-dev   libapache2-modsecurity

5.安装mysql-5.7
sudo  apt-get  -y  install  mysql-server  mysql-client  libmysqlclient-dev

需要在mysql的安装界面中输入密码 root 和确认密码root。

6.安装PHP7
sudo  apt-get  -y  install  php7-*
7.查看ModSecurity版本号
sudo  dpkg  -s  libapache2-modsecurity  |  grep  Version

 

LAMP环境安装完成,以下是配置ModSecurity和apache。(还要经过一系列设置让它启动起来)

8.开启ModSecurity功能

8.1 切换到modsecurity目录

cd  /etc/modsecurity/ 

8.2 重命名 modsecurity.conf-recommended 文件名为 modsecurity.conf

sudo  mv  modsecurity.conf-recommended  modsecurity.conf 

 

8.3 编辑modsecurity.conf文件,开始规则引擎

第七行原本的意思是仅仅检测不起作用

显示行号的技巧:set nu

sudo  vi  modsecurity.conf

SecRuleEngine On

文件的第七行,修改为On

9.在apache中启用modsecurity模块

        也就是说他两是一种有数据的交互所以呢在apache的目录下边有一个是专门针对modsecurity的,也可以认为modsecurity目前是apache的一个安全模块。所以修改它增加相应的设置。

9.1 打开security2.conf 文件

sudo  vi  /etc/apache2/mods-available/security2.conf

9.2在<IfModule></IfModule>中加入以下内容,保存退出


include /usr/share/modsecurity-crs/*.conf
include /usr/share/modsecurity-crs/activated_rules/*.conf

         作用:include文件包含,activated_rules活动规则,*.conf规则文件,写的规则文件都得在这个/usr/share/modsecurity-crs/activated_rules/目录下,都得以*.conf方式命名。

下面我们开始编写规则文件。

10.新建文件my_rule.conf进行测试,拒绝本机访问web

10.1 新建文件my_rule.conf

sudo  vi  /usr/share/modsecurity-crs/activated_rules/my_rule.conf

10.2写入以下内容,保存退出(意思是不允许物理机192.168.10.1访问,编号为1,阶段一,日志,日志审计,拒绝,状态码返回浏览器403)

SecRule REMOTE_ADDR "@ipMatch 192.168.10.1" "id:1,phase:1,log,auditlog,deny,status:403"

 

11.重启apache使配置生效
sudo  systemctl restart  apache2 
12.本机访问测试
 可以访问

 

13.通过真机访问

真机ping可以通过

14.查看日志

sudo less /var/log/apache2/modsec_audit.log

q 退出

注意的问题:

有时我们设置了黑名单,也重启了apache服务,但是处于黑名单IP的浏览器仍然可以访问到页面。原因是浏览器有缓存,要想看到结果,我们清除一下浏览器的缓存。

自行测试:修改规则,允许真机访问,不允许kali和Ubuntu本机访问!

SecRule REMOTE_ADDR "@ipMatch 192.168.10.132,192.168.10.129,127.0.0.1" "id:1,phase:1,log,auditlog,deny,status:403"

1.修改规则

2.重启apache服务

**3.需要时,清除浏览器缓存,再访问 **

有时间可以完成以上练习,初步感受modsecurity(WAF)的作用.

        仅仅封IP地址那跟普通防火墙差不多,还不能够体现waf的优势,接下来继续

6.Ubuntu搭建测试DVWA靶机

1.下载DVWA源码文件,并解压

1.1 切换目录

cd  /var/www/html/ 

1.2 下载DVWA源码文件

sudo  wget  https://github.com/ethicalhack3r/DVWA/archive/master.zip 

如果下载失败,多尝试几次就可以了(因为访问github慢,但这个源码小,有几率成功的),再不行就复制进去或者上魔法

靶场下载地址:蓝奏云
https://wwtt.lanzn.com/b00uyckd9a
密码:2x71

注意在/var/www/html下   .表示当前文件夹

sudo cp /home/tedu/DVWA-master.zip  .

1.3 解压缩

sudo  unzip  DVWA-master.zip

1.4 对目录重命名

sudo  mv  DVWA-master/  DVWA

2.重命名配置文件

2.1切换到config目录

cd  /var/www/html/DVWA/config 

2.2 重命名配置文件(复制了一个新的配置文件)

sudo  cp  config.inc.php.dist  config.inc.php
3.修改php配置文件,支持远程文件包含

3.1 编辑php配置文件

sudo  vi  /etc/php/7.0/apache2/php.ini

3.2 允许远程文件包含

输入 :/allow_url_include,回车,定位到当前行,将值设置为设置为On(默认情况下不支持远程文件包含)

allow_url_include = On

输入:wq 保存退出

4.重启apache(三秒内没报错那就OK)
sudo  systemctl  restart  apache2

 

5.创建数据库及管理用户

5.1进入mysql (这条命令不要复制,要自己输入)

sudo mysql -uroot -proot  

5.2 创建dvwa数据库

mysql> create database dvwa;

5.3 创建dvwa用户用来管理dvwa库,密码为dvwa@123(这种比用root账号安全的多)

 作用:授权all(增删改查)权限针对于dvwa这个库的所有表,并且dvwa一定是本地连接,

mysql> grant all on dvwa.* to  'dvwa'@'localhost'  identified by 'dvwa@123';

 

5.4 退出mysql

**mysql> exit;
6.修改DVWA配置文件

6.1 打开配置文件

sudo  vi  /var/www/html/DVWA/config/config.inc.php

6.2 修改的内容如下:

$_DVWA[ ‘db_database’ ] = ‘dvwa’; //数据库名

$_DVWA[ ‘db_user’ ] = ‘dvwa’; //用户名

$_DVWA[ ‘db_password’ ] = ‘dvwa@123’; //密码

$_DVWA[ 'recaptcha_public_key' ] = '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb’; //填充key

$_DVWA[ 'recaptcha_private_key' ] = '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K’;

$_DVWA[ 'default_security_level' ] = 'low';

7.赋予相应的文件权限

直接将DVWA网站源文件的属主和属组修改为www-data即可

sudo  chown  www-data:www-data  -R  /var/www/html/DVWA/

 因为属主和属组都是root不太好

改之后,网站的属主和属组就应该是它本身,防权止别人使用sudo提

8.重启服务
 sudo  systemctl  restart  apache2  mysql

 

9.进入dwva界面配置

9.1 浏览器地址栏输入:

http://192.168.10.132/DVWA/setup.php

9.2 在页面中

点击“Create/Reset Database”按钮,安装成功后,页面底部有一个login链接

10.登录

用户名:admin 密码:password ,进入主界面,然后点击下面的部署表就行,自动跳回登录界面再继续登录就可

注意:在windows和Ubuntu中部署DVWA有一定区别的。

简单区分不同操作系统的方法

        注意,在Windows里边无论你的目录大小写它是不区分的,LINUX系统里边如果目录是大写那就一定是大写,这也是最简单区分不同操作系统的方法,看网站受不受影响。

二、ModSecurity案例

1.XSS防御 ,例如 不允许参数中出现<script>

1.1 dvwa设置安全级别为low,选择“XSS(Reflected)”

然后输入<script>alert(1);</script>,弹框

1.2 打开 my_rule.conf

 sudo  vi  /usr/share/modsecurity-crs/activated_rules/my_rule.conf

 展示出来的是刚刚写的封IP的规则,删掉不需要了,换下面的(按两次DD键就全快速删除了)

1.3 写入以下内容

SecRule ARGS "@contains <script>" "id:2,deny,status:403"

解释:SecRule(创建规则) ARGS(规则作用于参数包括get、post) "@contains <script>" "id:2,deny(禁止),status(状态码):403"

1.4重启apache2服务

 sudo  systemctl restart  apache2 

         之后在物理机测试一下,输入<script>alert(1);</script>,然后就是被禁止了。说明被waf防护了,没有调用后端代码,

1.5 防止大小写绕过

        但是,<Script>alert(1);</Script>,某一个字母改成大写呢?就可以绕过WAF了,所以规则也是有漏洞的,没有做太严格的限制,可以改下成下面

SecRule ARGS "@contains <script>" "id:2,deny,status:403,t:lowercase"

过程解析:

  1. ?name=<Script>alert(1)</Script>
  2. WAF收到name这个参数,将其值转换为小写<script>alert(1)</script>
  3. 然后执行运算符,<script>alert(1)</script>包含<script>吗?规则命中,执行deny。

1.6重启apache2服务

sudo  systemctl restart  apache2  

2.**文件上传漏洞的防御 **

可以看到原本是有文件上传漏洞的

1.1 dvwa设置安全级别为low,选择“File Upload”

选择一个php文件,并上传,上传成功

1.2 打开 my_rule.conf

tedu@ubuntu: ~$ sudo vi /usr/share/modsecurity-crs/activated_rules/my_rule.conf

1.3 写入以下内容

SecRule FILES "(?:\.php|\.jsp|\.asp|\.aspx)$" "phase:2,block,log,id:3,t:lowercase"

SecRule FILES(针对文件参数) "(?:\.php|\.jsp|\.asp|\.aspx)$" "phase:2,block(既不允许向前也不向后让你等着有个统一的处理),log,id:3,t:lowercase(防止大小写绕过)"

1.4重启apache2服务

tedu@ubuntu: ~$ sudo systemctl restart apache2

经测试,原先能上传,现在不允许

.php: php语言开发的web应用

.jsp: java语言开发的web应用

.asp/.aspx: 微软的c#语言开发的应用

3.xss拦截后,拦截后跳转到自定义拦截页面

因为拦截的页面后自定义的是默认带有信息泄露,得换一个页面,这个是modsec提供的,f复制进去

SecRule ARGS "@contains <script>" "id:2,deny,status:403,t:lowercase,redirect:http://www.modsecurity.cn/practice/intercept.html"

4.所有拦截后跳转到自定义拦截页面(block)

4.1使用SecDefaultAction(设置默认动作的),需要写在其他规则之前才能生效

SecDefaultAction "**phase:2**,log,auditlog,deny,status:302,redirect:http://www.modsecurity.cn/practice/intercept.html"

没有写phase:2 这一项,apache启动会失败。

4.2 需要将拦截动作改成“block”,只有使用了“block”的拦截动作,才会执行SecDefaultAction定义的阻断性动作

SecRule ARGS "@contains <script>" "phase:1,id:1,block,t:lowercase"

4.3 文件上传本来写的就是block,不用修改。

最后的配置文件内容:

SecDefaultAction "phase:2,log,auditlog,deny,status:302,redirect:http://www.modsecurity.cn/practice/intercept.html"
SecRule ARGS "@contains <script>"  "id:1,block,t:lowercase"
SecRule FILES "(?:\.php|\.asp|\.aspx)$" "id:2,block,t:lowercase"

可以删了之前的,用这个全部复制进去,再试试效果 

 

三、ModSecurity开启日志审计

1.编辑配置文件

sudo vi /etc/modsecurity/modsecurity.conf

tedu@tedu:~$

2.修改内容

SecAuditEngine **On **#183行

SecAuditLog /var/log/apache2/modsec_audit.log #193行

3.查看日志内容

sudo cat  /var/log/apache2/modsec_audit.log

完成上述测试后发现写规则还是挺费时间麻烦的,owasp这个组织写好了现成的规则,可以直接用

四、OWASP规则集的部署

1.下载规则集(下载不成功,就复制)

tedu@ubuntu: ~$ sudo wget https://github.com/root25/MODSEC/raw/master/modsecurity-crs_2.2.5.tar.gz

蓝奏云下载地址:https://wwtt.lanzn.com/b00uydem8d
密码:8jlx

2.规则集介绍

ModSecurity OWASP 规则集说明_modsecurity 集成owasp规则-CSDN博客

 自己写的就很简单的,看下图对比别人写好的(显得自己写的很小儿科),经过多次测试的,直接套用别人完善的最能起到防御的作用

3.使用下载的规则集

# 1.切换到活动规则目录
cd /usr/share/modsecurity-crs/activated_rules
# 2.选择一条规则文件复制到该目录下,注意后面有个点复制全
sudo cp /home/tedu/modsecurity-crs_2.2.5/base_rules/modsecurity_crs_41_xss_attacks.conf .

sudo cp /home/tedu/modsecurity-crs_2.2.5/base_rules/*41* .
sudo cp /home/tedu/modsecurity-crs_2.2.5/base_rules/*40* .

   

# 3.重启apache
sudo  systemctl restart  apache2   
#4.验证对XSS的防御

 用了别人的那自己的删掉就好了,我们自己写是很难写出来的,写不出这么完善,这个是针对XSS的严密的防护,接下来继续

 

**作业1:**将基础规则集全部部署,看行不行。

修改modsecurity_crs_21_protocol_anomalies.conf,将该文件中,id为960017的规则注释或删除就可以了

SecRule REQUEST_HEADERS:Host "+$" "phase:2,rev:'2.2.5',t:none,block,msg:'Host header is a numeric IP address', severity:'2',id:'960017',tag:'PROTOCOL_VIOLATION/IP_HOST',tag:'WASCTC/WASC-21',tag:'OWASP_TOP_10/A7',tag:'PCI/6.5.10',tag:'http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx',setvar:'tx.msg=%{rule.msg}',setvar:tx.anomaly_score=+%{tx.notice_anomaly_score},setvar:tx.policy_score=+%{tx.notice_anomaly_score},setvar:tx.%{rule.id}-POLICY/IP_HOST-%{matched_var_name}=%{matched_var}"

**作业2:**什么是XFF?什么是参数污染?

**作业3:**可以在ubuntu1604部署joomla,然后尝试针对joomla的规则

不同的WAF,网上有着不同的绕过机制。我们需要多尝试!例如:可以绕一下安全狗、D盾、WTS、ModSecurity。

如果考虑使用Sqlmap绕WAF,通过tamper脚本。sqlmap有自带的tamper脚本,我们也可以从网上搜索更多的tamper脚本。

sqlmap 使用tamper脚本绕过WAF

适用于测试学习,还有,假如公司不想掏钱又想价格低廉的,来一个waf,可以用上,

做渗透的时候遇到哪个waf就去查如何绕那个waf

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

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

相关文章

XRAY~漏洞扫描工具

有人说&#xff1a;“所有的漏扫工具都是人写出来的&#xff0c;既然是工具&#xff0c;肯定没有人厉害&#xff0c;但是&#xff0c;漏扫可以大大减少你的工作量” 4、⭐ XRAY xray 是一款功能强大的安全评估工具&#xff0c;由多名经验丰富的一线安全从业者呕心打造而成&…

五、2 移位操作符赋值操作符

1、移位操作符 2、赋值操作符 “ ”赋值&#xff0c;“ ”判断是否相等 1&#xff09;连续赋值 2&#xff09;复合赋值符

关于栈(顺序栈)的知识讲解

1.1 什么是栈 栈是只能在一端进行插入和删除操作的线性表(又称为堆栈)&#xff0c;进行插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。 特点&#xff1a;栈是先进后出FILO(First In Last Out) (LIFO(Last In First Out)) 1.2 顺序栈 1.2.1 特性 逻辑结构&#xff1…

推荐4款高效的视频剪辑神器。

很多人一开始&#xff0c;面对各种视频剪辑软件时会不知所措。不知道该选择哪一个&#xff0c;也知道如何使用。但是这几个软件&#xff0c;对于不太熟悉视频剪辑的朋友们来说简直就是神器&#xff0c;简单易上手&#xff0c;功能做的也非常的专业。 1、福昕剪辑软件 直达链接…

高性能 Web 服务器:让网页瞬间绽放的魔法引擎(下)

目录 一.Nginx 反向代理功能 1.缓存功能 2.http 反向代理负载均衡 二.实现 Nginx 四层负载均衡 三.实现 FastCGI 1.为什么会有FastCGI&#xff1f; 2.什么是PHP-FPM&#xff1f; 3.FastCGI配置指令 4.Nginx与php-fpm在同一服务器 5.Nginx配置转发 6. php的动态扩展模…

关于c++多线程中的互斥锁mutex

关于c多线程中的互斥锁mutex c中的多线程线程的基本概念C 标准库中的线程支持 多线程与主线程与join换一种方式理解线程互斥锁第一种第二种 子线程与互斥锁混合锁--看这个应该就明白了&#xff08;这个主要使用的是嵌套锁&#xff09;定义一个类创建线程 这个示例主要使用并列锁…

SAP负库存

业务示例 在系统中&#xff0c;对于一些物料而言&#xff0c;不能立即将收到的交货输入为收货。如果要使发货无论如何都是可以过帐的&#xff0c;则需要允许这些物料的负库存。 负库存 发货数量大于预订数量时&#xff0c;过帐该发货就会出现负库存。如果由于组织原因&#…

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

目录 一、引言 二、零样本图像分类&#xff08;zero-shot-image-classification&#xff09; 2.1 概述 2.2 技术原理 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模型排名 三、总结 一、引言 …

嵌入式软件--PCB DAY 1

一、入门 1.什么是PCB 随着技术的进步&#xff0c;我们已经可以将一个电子设备的主要功能全部集成在一块单独的电路板上。这种电路板可以由相关的机械设备像印刷一样生产出来。因此我们现在的电路板可以被称为印刷电路板(Printed Circuit Board&#xff09;。 2.什么是PCBA …

洛谷B3981题解

题目描述 &#xff08;你不需要看懂这张图片&#xff1b;但如果你看懂了&#xff0c;会觉得它很有趣。&#xff09; JavaScript 是一种功能强大且灵活的编程语言&#xff0c;也是现代 Web 开发的三大支柱之一 (另外两个是 HTML 和 CSS)。灵活的 JavaScript 包含“自动类型转换…

C++实现——红黑树

目录 1.红黑树 1.1红黑树的概念 1.2红黑树的性质 1.3红黑树节点的定义 1.4红黑树的插入操作 1.5红黑树的验证 1.6红黑树的删除 1.7红黑树与AVL树的比较 1.8红黑树的应用 1.红黑树 1.1红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位…

系统架构:分而治之

系统架构&#xff1a;分而治之 引言“分而治之”在架构中的应用模块化设计分层化架构微服务架构 分而治之的优势降低复杂性提高灵活性和可扩展性增强可维护性促进团队协作 分而治之的劣势复杂性转移性能开销开发和运维的复杂性数据一致性挑战 结论 引言 “分而治之”是一种分析…

修改Patroni ttl和retry_timeout

参数解释 修改 & 查看 https://www.cnblogs.com/linyouyi/p/15714010.html

58.区间和

58.区间和 //卡码网题号58.区间和 /* //如果我查询m次&#xff0c;每次查询的范围都是从0到n-1&#xff0c;那么该算法的时间复杂度是O(n*m)&#xff0c; //如果查询次数非常大的话&#xff0c;这个时间复杂度也是非常大的。 #include<iostream> #include<vector> …

失易得数据恢复体验,2024精选数据恢复工具推荐!

数据丢失的风险无处不在&#xff0c;可能是由于硬件故障、软件错误、病毒感染或人为操作失误等原因。在这种情况下&#xff0c;数据恢复工具就显得尤为重要。本文将介绍几款市场上广受好评的数据恢复工具&#xff0c;帮助您在数据丢失后能够迅速找回宝贵的信息。 一、Foxit数据…

Windows客户端加入域环境时提示指定的服务器无法运行请求的操作

工作中小毛小病之&#xff1a;如下图 问题出在域控制器上&#xff0c;检查域控制器的各项域服务是否正常&#xff0c;确认windows防火墙关闭&#xff0c;一般能解决这个问题&#xff1b; 如果之前一切正常&#xff0c;只是某台电脑重装系统或者新电脑加入域出现这个情况&#…

LCD 显示字符

1.0 字符显示 使用显示图片的方式显示字符会浪费存储空间&#xff0c;显示字符的时候字符的笔画是一个固定的颜色&#xff0c;因此不用使用显示图片的方式&#xff0c;可以使用1 表示字符的本身&#xff0c;0 表示字符的背景&#xff0c;使用这种方式显示字符节省存储空间。 注…

每日OJ_牛客_反转部分单向链表

目录 牛客_反转部分单向链表 解析代码 牛客_反转部分单向链表 反转部分单向链表__牛客网 题目给的代码‘&#xff1a; #include <iostream> using namespace std; struct Node {int val;struct Node* next; }; Node* input_List() {int n,val;Node* pheadnew Node();…

【Java】效率工具模板的使用

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 乱码问题4.2 快捷键模板4.3 文件模板 一、前言 提高效率 二、学习内容&am…

【开端】Linux抓包测试接口

一、绪论 平时我们开发接口&#xff0c;可以通过程序去调用接口测试接口的情况&#xff0c;也可以通过postman去测试接口的联通情况&#xff0c;也可以直接通过命令去调试接口的情况。 二、几种接口调试方式 1、程序代码测试 public static void main(String[] args) {String …