の
首页项目归档照片墙音乐说说杂谈🌳 灵境📝 草稿箱友链关于⚙️ 设置
封面

笔记题库

原文件✏️修改此篇
写作时间:2026-09-24T10:14:03

笔记题库

Linux笔记

常见的Linux系统
  1. Debian :是社区驱动的 Linux
  2. Ubuntu:基于 Debian,是全球最流行的发行版之一
  3. Kali Linux:基于 Debian,专为网络安全测试和渗透测试设计的发行版
  4. openEuler (欧拉):华为发起的开源操作系统
  5. Anolis OS (龙蜥):由阿里云主导
  6. CentOS
  7. 统信 UOS:统信软件开发的国产操作系统

sudo:

su - root:切换root管理员用户 nmtui :网络管理器文

ip addr / ip a:查看本机ip

编辑连接 => 以太网/编辑 => 配置本机ip => 编辑ipv4 => 确定并出来 IPV4配置:例: 地址:10.0.0.159 网关:10.0.0.2 DNS服务器:223.5.5.5(阿里云面向全球用户提供的免费公共DNS服务器IP地址)

systemctl restart NetworkManager:重启NetworkManager(网卡)服务

Xshell连接虚拟机输入虚拟机中系统中修改后的IPV4地址10.0.0.159

Ssh:协议
  • 远程连接协议 端口 22 默认端口号 可以改

端口号:1-65535

Linux的挂载操作:最基础的用法就是磁盘分区

目录介绍
目录名 全称 功能描述
/ 根目录 所有目录的起点
/bin Binary 存放系统基础命令(普通用户可用,如Is、cd)
/sbin Super Binary 存放系统管理员才能使用的管理命令(仅root可用,如 shutdown、fdisk)
/etc etc 存放系统/软件所需的配置文件和子目录(如网络配置ifcfg-ens33、用户配置passwd)
/lib Library Linux 系统中核心动态链接库(共享库)的存放地,它存放的是系统启动、运行以及基础命令所必需的共享库文件,与根目录(/)一样,是系统启动时就必须存在的。
/lib64 Library 64-bit 存放新版64位软件依赖的库文件
/home 家目录 普通用户的家目录(如/home/user)
/root root 家目录 root 用户的家目录
/var Variable 存放动态变化的日志文件(如日志/var/log/messages、邮件/var/mail)
/tmp Temporary 临时文件目录(回收站)
/boot Boot 存放Linux系统启动的核心文件(如内核vmlinuz、引导程序grub、连接文件、镜像文件等)
/dev Device 存放一些外部设备文件(如硬盘/dev/sda、光驱/dev/cdrom),Linux中访问设备的方式和访问文件相同
/proc Process 虚拟目录,它是系统内存的映射,存放进程和内核信息(这个目录的内容不在磁盘中,而是存放在内存里)可通过直接访问这个目录获取系统信息
/usr Unix System Resources 存放第三方软件(如/usr/bin是用户命令,/usr/local是本地安装目录)
/media Media 自动挂载的可移动外部设备(如U盘、光盘)
/mnt Mount 手动挂载各种文件系统的临时挂载点,例如光驱
var目录
  • var/ru/utmp 记录现在登入的用户,使用w,who,users等命令查看
  • var/log/wtmp 记录用户所有的登入和登出,使用last命令查看
  • var/log/lastlog记录每一个用户最后登入时间,使用lastlog命令查看
  • var/log/btmp记录所有登录失败信息,使用lastb命令查看
  • var/log/auth.log需要身份确认的操作
  • var/log/cure 记录安全相关的日志信息(kei u e)
  • var/log/maillog 记录邮件相关的日志信息
  • var/log/message 记录系统启动后的信息和错误日志
  • var/log/cron 记录定时任务相关的日志信息(k ruang)
  • var/log/spooler 记录UUCP和news设备相关的日志信息
  • var/log/boot.log记录守护进程启动和停止相关的日志消息
重启Linux系统:
  • shutdown -h now (now可换成具体时间)
useradd :创建新用户
passwd:设置密码
usermod:修改用户信息
userdel:删除用户信息
groupmod:修改用户组
groupdel :删除用户组(群组)
gpasswd:群组设置群组管理员
chgrp:修改目标的所属组
getfacl 获取ACL权限
SUID 特殊权限
SetGID(SGID)组的特殊权限
pin:可通过指令向目标ip使用,扫描存活的主机数

区分操作系统的方式有如下几种:

  • 通过TTL的值能够区分目标主机的操作系统

    • Linux/Android:64
    • Windows:128
    • macOS/iOS/Linux(部分):64
    • 网络设备(Cisco):255
  • 通过是否能进行中文的识别

  • nmap -O 192.168.1.1
    
    • nmap:网络扫描工具
    • -O:开启 OS Detection(操作系统探测)
    • 192.168.1.1:目标主机(比如你的路由器 / 网关)

    作用:通过主动发包探测目标,推测它运行的是什么操作系统,输出如 Linux 4.x、Windows 10/11 等。

网络基础

一、网络基础

POC/POC

POC:能够验证某种某个漏洞的一个代码

EXP(Exploit):专门能用于攻击某个漏洞的一个代码

POC 验证漏洞,EXP 利用漏洞

三种网络类型

虚拟机的三种网络类型:桥接模式,NAT模式,仅主机模式

桥接:ip是宿主机同网段能内外通网局域网能够访问

Nat:ip 由虚拟机的 dhcp 协议分配,能内通外不能外通内局域网不能

仅主机:ip 也是 dhcp 分配不通网

模式 虚拟机的IP地址 与宿主机通信 访问局域网其他设备 访问互联网 适用场景
桥接模式 与宿主机同一网段,由路由器分配 ✅ 可以 ✅ 可以 ✅ 可以,使用宿主机网卡 希望虚拟机在网络中像一台独立物理机,对外提供服务
NAT模式 由**VMware虚拟NAT(Dhcp)**分配,网段通常为192.168.xxx.xxx ✅ 可以 ❌ 不能 ✅ 可以(通过宿主机网络地址住转换) 仅需虚拟机访问外部网络下载软件,而不干扰局域网环境
仅主机模式 由VMware虚拟DHCP分配,网段通常为192.168.yyy.yyy ✅ 可以 ❌ 不能 ❌ 不能 搭建完全隔离的测试环境,或与宿主机进行安全通信

Dhcp:它是一种协议,用于自动获取ip 动态获取

欧拉系统:华为开源产品

协议:就是一套双方都认可的、标准化的“沟通规则”或“通用语言”

命令:命令执行 代码执行

在安装目录下面可能存在.lck的文件或者目录,可以直接删除就能正常启动虚拟机

扫描或者打开虚拟机

进程的类型
  • 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获 取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
  • 交互进程:是由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行; 批量处理进程:这种进程和终端没联系,是个进程序列;
  • 守护进程:在Linux系统启动时启动的进程,并在后台运行;
  • 超级守护进程:系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需 要通过xinet的转接才可以唤醒被xinet管理的进程。

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

网络拓扑结构
  • 按功能划分:核心层(高速骨干,含路由器/防火墙)、汇聚层(连接核心与接入层)、接入层(直接连接终端)。
  • 按覆盖范围划分:局域网(LAN,小范围高速)、城域网(MAN,城市范围)、广域网(WAN,全国/全球,如互联网)。

二、网络层次结构模型

OSI七层模型(开放系统互连参考模型)

下至上七层,规范不同设备通信标准:

  • 物理层:将数据转为物理信号(如电信号)。
  • 数据链路层:分帧、流量控制(如MAC地址通信)。
  • 网络层:路由选择(IP地址寻址)。
  • 传输层:可靠连接(TCP)或高效传输(UDP)。
  • 会话层:建立/管理连接(如远程登录)。
  • 表示层:协商数据格式(如加密/压缩)。
  • 应用层:用户程序接口(如HTTP/FTP)。

TCP/IP四层模型(实际应用更广泛)

  • 网络接入层:物理连接(如以太网)。
  • 因特网层:IP协议(寻址与路由)。
  • 主机到主机层:TCP(可靠)/UDP(高效)。
  • 应用层:HTTP/SMTP/SSH等协议(用户服务)。

三、数据封装与传输原理

网络通讯:极简版

数据(data) => 段(Header:端口) => 包(IP) =>建立连接(寻址与路由) => 帧(Mac+type) =>bt 的过程

封装过程

OSI 层 协议 / 头部 PDU名称
应用层 (7) / 表示层 (6) / 会话层 (5) 无额外头(或应用协议头) 数据 Data段(加端口)
传输层 (4) TCP/UDP 头(端口号) 段 Segment包(加 IP)
网络层 (3) IP 头(源 / 目的 IP) 包 Packet帧(加 MAC + type)
数据链路层 (2) 帧头(MAC、类型) FCS帧 Framebt(比特)
物理层 (1) 电 / 光 / 无线信号比特 Bit

太网数据段的整体大小在1472字节以内;

其中组成部分:
  • 分段后的每段的报头:源端口+目标端口+其余共20/8 字节

  • 真实数据信息(1452字节或1464字节)

  • 每个包的报头:TCP/UDP协议包头(20字节/8字节):IP目标地址(6)+IP源地址(6)+其余(8)

  • 以太网链路传输的数据包称做以太帧

  • 数据转化为数据帧后:以太网帧大小在 64~1518 (不包含前导码),通常大小是1518字节;

    报头:目的Mac(6)+源Mac(6)+数据类型信息(2)

    组成:报头(14)+ PPOE(8)+ 数据包(1492)+ 帧校验(4)

  • 转为bit后通过高低电压发送数据包,组成部分:前导码(8)+ MAC数据帧 + 帧间隙(12)

网络通讯:逐层封装详解

网络数据解封过程:
  1. 接收数据终端网卡识别比特流数据信息,并将比特流数据信息转换为数据帧;

  2. 识别数据帧信息中的头部信息,核实目标mac地址信息是否正确,随之将数据帧拆解为数据包; Mac地址不匹配 电脑会丢弃该数据 mac 地址即物理地址 每台主机(每个网卡)都有mac地址

  3. 识别数据包信息中的头部信息,核实目标ip地址信息是否正确,随之将数据包拆解为数据段;

  4. 识别数据段信息中的头部信息,核实目标UDP/TCP协议端口信息是否正确,得看是否有该端口的服务,随之拆解为数据;ps:后期会学习端口信息 netstat -lntup 查看端口命令

  5. 服务程序识别网络传输的数据信息,并随之进行相应回复响应;

网络数据传输原理

局域网数据传输原理(交换机)

一种局域网(LAN)核心组网设备,负责连接多台计算机 / 设备,实现基于 MAC 地址的帧转发

  • 当ABCD等多个主机连接同一个交换机,初始状态中交换机记录表为空,当A向D发送一条信息时
  • 第一步:A将数据构建封装后(携带源mac和目标mac)发送给局域网数据交换设备
  • 第二步:局域网交换设备会拆解数据获取链路层的mac头部信息,与自身构建的mac表进行比较,如果表中不存在就更新添加入mac表
  • 第三步:将拆解后数据再次封装好从相应接口转发(库表中存在目的mac),如果不存在即向所有连接这个交换机的用户群发送广播
  • 第四步:目标D(数据接收端)进行数据读取的解封过程,然后根据封装头部的目标信息确认是否可以接收数据,以及进行回应
  • 第五步:交换机接收D的信息再次校验D携带的源mac和目的mac,进行匹配,最终转发给A主机
互联网数据传输原理

声明:路由器用于实现不同局域网之间的通讯

核心逻辑是路由表中存储的ip网段,主机通过携带访问的目的IP经由交换机发给路由器,由路由器从表中找到对应目标后重写mac值并发给对应网段的交换机,再由交换机查对应的主机

在互联网中,当主机A想和主机B不在同一个局域网想进行远程连接通讯时,基本过程原理如下:

  • 过程一:由主机A(数据发送端)进行数据构建的封装过程,然后利用网卡设备将数据发送到局域网数据交换设备
  • 过程二:局域网交换设备获取中转数据后,会拆解数据获取链路层的mac头部信息,与自身构建的mac表进行比较
  • 过程三:局域网交换设备获取中转数据后,会根据比较后mac表记录信息,将拆解后数据再次封装好从相应接口转发
  • 过程四:互联网路由设备获取中转数据后,会拆解数据获取链路层和网络层头部信息,与自身构建路由表进行比较
  • 过程五:互联网路由设备获取中转数据后,会根据比较后路由表记录信息,将拆解后的数据再次封装好从相应接口转发
  • 过程六:局域网交换设备获取中转数据后,会拆解数据获取链路层的mac头部信息,与自身构建的mac表进行比较
  • 过程七:局域网交换设备获取中转数据后,会根据比较后mac表记录信息,将拆解后数据再次封装好从相应接口转发
  • 过程八:由主机B(数据接收端)进行数据读取的解封过程,然后根据封装头部的目标信息确认是否可以接收数据

> 说明:数据包在经过路由设备进行中转时,源数据包中的链路层头部地址信息会发生改变,其余信息不变。

四、网络硬件设备

交换机(Switch)

基础简介
  • 功能:局域网内数据中转,根据MAC地址转发,可以为接入交换机的任意两个网络节点提供独享网络通路
  • 工作机制:学习MAC地址并维护MAC表,避免广播风暴(通过STP协议防环)。
  • 应用场景:企业内网终端接入、数据交换。
  • 种类:最常见的交换机是以太网交换机,还有三层交换机、园区交换机、数据中心交换机、核心交换机、汇聚交换机、接入交换机、无管理型交换机、Web管理型交换机、全管理型交换机、千兆交换机、多速率交换机盒式交换机和框式交换机等。
交换机企业中的主要应用:
  • 局域网环境中的终端设备的接入
  • 以太网数据帧的交换,根据目的mac地址转发数据帧
  • 学习mac地址,并维护mac地址表(学习功能记录mac连接信息)
  • 可以防止交换网络(局域网环境)产生环路
网络环路:

也分为第二层环路和第三层环路,所有环路的形成都是由于目的路径不明确导致混乱而造成的,例如第二层,一个广播信息经过两个交换机的时候会不断恶性循环的产生广播,造成环路,而第三层环路则是原路由意外不能工作,造成路由通告错误,形成一个恶性循环;即同时两条线路连接导致反向回传

路由器(Router)

基础简介
  • 功能:连接不同网络(局域网/广域网),根据IP地址路由。
  • 工作机制:构建路由表(直连/静态/动态路由),选择最优路径转发。
  • 应用场景:跨网络通信(如企业内网与互联网互联)。
路由器企业中的主要应用
  • 网络互连:路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
  • 数据处理:提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
  • 网络管理:路由器提供包括路由器配置管理、性能管理、容错管理和流量控制等功能。
路由器在连接设备之后构建路由表的方式主要常见的有三种情况:
  • 直连路由信息构建:主要是路由器连接哪个网络环境自动获取的网路路由条目信息;
  • 静态路由信息构建:主要是路由器管理人员根据网络拓扑自行手动规划配置的信息;
  • 动态路由信息构建:主要是路由器管理人员根据网络拓扑使设备自主学习路由信息;(路由器彼此之间相互学习,即两个ip之间可能由多个路由器连接)

什么路由是最佳的由路由协议去决定,条数越少,时间越快,效率越高

五、关键网络协议与应用

网络协议类型
  • HTTP/HTTPS:网页传输(HTTPS加密传输)
  • FTP/SFTP:文件传输(需要用户名、密码)
  • SSH:安全远程登录(替代Telnet)
  • DHCP:自动分配IP地址(局域网常用)
  • ICMP:网络诊断(如ping命令)
  • DNS:域名系统,将域名解析为IP地址(www.baidu.com)
  • ARP: ARP 协议的全称是 Address Resolution Protocol(地址解析协议),它是一个通过用于实现从 IP 地址到 MAC 地址的映射,即询问目标 IP 对应的 MAC 地址 的一种协议。

六、网络地址核心知识

IP地址基础概念

IP地址是网络层为设备分配的逻辑地址,用于唯一标识网络中的主机,解决“如何在网络中找到目标设备”的问题。

IP地址的范围与分类

类型 范围(点分十进制) 用途与特点
A类 1.0.0.0~127.0.0.0 早期大型网络使用(如运营商),主机位多(24位)
B类 127.0.0.0~ 191.255.0.0 中型企业网络,主机位16位,可分配主机数2^{16}--1
C类 192.0.0.0~ 223.255.253.0 小型企业/家庭网络,主机位8位,可分配主机数2^{8}-2(8位)
D类 224.0.0.0~239.255.255.255 组播地址(一对多通信,如视频会议)。
E类 240.0.0.0~255.255.255.254 科研保留地址(如实验网络)。

特殊IP地址

  • 0.0.0.0:表示“所有主机”或“无效地址”(如路由表中默认路由)。
  • 255.255.255.255:广播地址(向局域网所有主机发送数据)。
  • 127.0.0.1:回环地址(测试本地TCP/IP协议是否正常)。

子网划分:

作用:避免比如浪费地址空间,大量的局域网地址,网络区域内的大量广播数据传送,形成广播风暴

子网掩码
  1. 0.0.0 A类 网络位8位 掩码:网络位全为 1主机位全为 0 255.0.0.0

B 类网络位 16 主机位16位掩码:255.255.0.0

C 类网络位 24 主机位8 位掩码:255.255.255.0

子网划分方法

将172.16.0.0/16划分出四个子网 即借两位可产生四个不同的组合00,01,10,11

十进制的后两位0.0的二进制为0000 0000,借两位即

0000 0000 => 0.0(十进制)

0100 0000 => 64.0(十进制) 2^7

1000 0000 => 128.0(十进制) 2^8

1100 0000 => 192.0(十进制) 2^8+2^7

即可用子网为172.16.0.0/18,172.16.64.0/18,172.16.128.0/18,172.16.192.0/18

私网地址:

定义**:重复使用于局域网的地址(禁止在公网路由),解决地址枯竭问题。

类型 私网网段 私网地址访问
A类 10.0.0.0/8 10.0.0.0~ 10.255.255.255
B类 172.16.0.0/12 172.16.0.0~ 172.31.255.255
C类 192.168.0.0/16 169.254.0.01~ 169.254.255.255
169.254.0.0/16 192.168.0.0~192.168.255.255

NAT技术:私网地址通过路由器转换为公网地址访问互联网(如家庭路由器映射内网IP到公网IP)。

DNS记录类型 :端口53

解析记录类型

在查询过程中,涉及几种关键的记录类型:

  • A记录(Address):最核心的记录,用于将域名解析为IPv4地址。
  • AAAA记录:功能与A记录相同,但用于解析为IPv6地址。
  • CNAME记录(别名记录):将一个域名指向另一个域名,而不是直接指向IP。例如,www.example.com 可能通过CNAME指向example.com。
  • NS记录(域名服务器记录):指定该域名由哪个权威DNS服务器责解析。
  • MX记录(邮件交换记录):指定负责接收该域名邮件的邮件服务器。 这个层级化、分布式的查询体系,正是全球互联网能够稳定运行的基础。 如果你对如何修改本地 hosts 文件,或者如何通过命令行工具(如nslookup)手动查询DNS记录感兴。
DNS记录查找

优先本地浏览器缓存=>本地host文件=>本地网关的dns记录=>向DNS服务器查询通过.根域到顶级域名逐级查询

七、网络基础操作方法与路由配置详解

网络连通性与端口检测工具

ping:测试网络连通性

功能:基于ICMP协议(Internet控制消息协议)测试本地主机与目标主机的连通性,常用于判断网络是否可达。

在http服务里面使用content-Type用于标记当前正在传输的数据的类型抓包分析工具 tcpdump

静态网段路由配置

路由配置永久保存(重启生效): 编辑网卡配置文件(如/etc/sysconfig/network-scripts/XXXX)进行添加

网络安全建议:
  • 关闭无用端口(如非业务需求的22,80端口)
  • 修改默认接口(如SSH的远程连接的22接口改为非标准接口)
  • 配置防护墙白名单(仅允许特定IP访问关键端口)

HTTP协议

HTTP协议特点:
  • 支持客户端/服务器模式(B/S模式)
  • 简单快速:客户端向服务端发一个请求,服务端收到返回一个响应就完事儿了
  • 灵活:可任意类型数据对象,只要Content-Type标记类型:
  • 无连接:每次连接只处理一个请求,服务处理完并返回响应后即断开
  • 无状态:每次请求都一视同仁,不会记得之前的请求做了什么即每次请求都是独立的,服务器也不会记录
工作原理

HTTP协议是基于TCP/IP协议之上的协议,基于客户/服务器模式,且面向连接的。

HTTP事务处理过程

客户端和服务端建立连接=> 向服务端发起请求 => 服务端接收请求并做出响应 => 双方断开连接

请求/响应报文结构:
  • 请求报文:
    • 请求行 => 请求方法 、 请求URL,HTTP协议版本
    • 请求头部
      • Host:指定请求的服务器的域名和端口号。
      • Accept:指定客户端能够接收的内容类型。
      • Cache-Control:指定请求和响应遵循的缓存机制。
      • Cookie:客户端用它向服务器传送数据
      • Content-Type:请求的与实体对应的MIME信息。
        • text/子类,image/子类,application/子类:应用数据类型
        • 当发现回显信息中的检验数据类型为**类型/子类型的类型,那么就是一个Mame**的格式
      • ⭐Referer:告诉服务器你从哪个页面跳转过来的,即接口请求的页面地址,**防盗链 **, CSRF(跨站请求伪造)。
      • ⭐X-Forwarded-For(XFF) :是 HTTP 请求头中用于记录客户端真实 IP 及代理链的字段。它最常出现在反向代理、负载均衡、CDN 后面,用来让后端服务器知道“最初发起请求的客户端是谁”
    • 空行
    • 请求体
  • 响应报文(和请求报文类似)
    • 状态 => 报文协议以及版本 ,状态码以及状态描述
    • 响应头部
      • Refresh:页面的定时刷新,指定时间自动跳转别的页面
      • content-Security-Policy(CSP):最关键的安全头。通过白名单机制,限制网页可以加载哪些资源(如 脚本、样式、图片),能有效防御XSS跨站脚本攻击和数据注入。建议严格配置。
      • ⭐X-Content-Type-Options:建议设为nosniff,强制浏览器遵守服务器声明的MIME类型,防止MIME嗅探攻击。
      • Strict-Transport-Security(HSTS):强制浏览器在指定时间内,只通过HTTPS访问你的网站,防止SSL剥离攻击。
      • Set-Cookie:如果响应中带有此头,请确认是否设置了Secure(只能进行HTTPS请求)和HttpOnly(禁止JS读取)属性,这是保护Cookie的基本要求。
      • X-***系列的响应头字段可能会泄露后台信息,根据信息判断后台代码用的什么,基于这个去找这个版本系类语言的漏洞
    • 空行
    • 响应体
Session 依赖 Cookie(默认)
  1. 用户登录,服务端生成唯一 SessionID,把用户信息存到服务端 Session。
  2. 服务端通过 Set‑Cookie: JSESSIONID=xxxx 把 SessionID 发给浏览器。
  3. 浏览器后续请求自动带上这个 Cookie。
  4. 服务端拿到SessionID,去服务端查找对应的会话数据。
请求方式

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。



get:以url上?后的参数作为请求参数,直接暴露的,请求服务器资源用于读取

post: 请求参数存放在请求体body中,向指定资源提交数据,通常导致服务器数据变化

head:和get类似,但只返回响应头,没有响应体

put:全量替换(覆盖)指定资源,如果不存在则创建(body)

patch:局部更新指定资源,例如某些字段,不会全部替换(body)

delete:删除指定资源(可携带body)

options:查询服务器支持的http方法,一般用于跨域预检

trach:回显服务器收到的请求内容,主要用于调试和诊断,但通常会被服务器关闭,有安全风险

connetc:建立隧道连接,通常用于https代理

状态码

分类

分类 范围 含义 通俗理解
1xx 100-199 信息性响应 服务器已收到请求,你可继续往下处理
2xx 200-299 成功响应 请求成功,一切正常
3xx 300-399 重定向 需要进一步操作才能完成请求
4xx 400-499 客户端错误 客户端出问题了(如请求格式错误、权限不足)
5xx 500-599 服务器错误 服务器出问题了(内部错误、超时等)
1xx:信息性响应
100 Continue 继续 客户端应继续发送请求体(用于大文件上传前的确认)。
101 Switching Protocols 切换协议 服务器同意升级协议(如从 HTTP 切换到 WebSocket)。
103 Early Hints 早期提示 服务器在最终响应前先返回一些预加载提示,优化页面加载速度。
2xx:成功响应
状态码 含义 说明
200 OK 成功 请求成功,响应体包含请求的资源。这是最常见的状态码。
201 Created 已创建 请求成功且服务器创建了新资源(通常用于 POST 请求)。
202 Accepted 已接受 请求已被接受,但尚未处理完成(用于异步任务)。
204 No Content 无内容 请求成功,但响应体为空(如 DELETE 操作成功)。
301 永久重定向 资源已永久移动到新 URL,浏览器会自动跳转并缓存新地址。
**302 ** 临时重定向 资源临时位于新 URL,浏览器会跳转但不会缓存新地址(旧版称 Moved Temporarily)。
**304 ** 未修改 资源未发生变化,客户端可使用本地缓存(协商缓存命中)。
307 临时重定向 与 302 类似,但不允许将请求方法从 POST 改为 GET。
**308 ** 永久重定向
4xx:客户端错误(出问题找前端/用户)
状态码 含义 说明
400 Bad Request 错误请求 请求语法错误或参数有误(如 JSON 格式不正确)。
401 Unauthorized 未授权 需要身份验证(用户未登录或 Token 过期)。
403 Forbidden 禁止访问 服务器理解请求但拒绝执行(权限不足,如普通用户访问管理员页面)。
404 Not Found 未找到 请求的资源不存在(URL 写错或资源已被删除)。
5xx:服务器错误(出问题找后端/运维)
状态码 含义 说明
**500 ** 服务器内部错误 服务器遇到意外情况,无法完成请求(代码报错、数据库连接失败等)。
501 未实现 服务器不支持请求所需的功能(如不支持的 HTTP 方法)。
502 网关错误 网关或代理服务器从上游服务器收到无效响应(如后端服务挂了)。
503 Service Unavailable 服务不可用 服务器超载或正在维护,暂时无法处理请求。
504 网关超时 网关或代理服务器等待上游服务器响应超时。
三次握手
  1. 序列号seq(Sequence Number):占32位,表示这个tcp包的序列号。tcp协议拼凑接收到的数据包时,根据seq来确定顺序,并且能够确定是否有数据包丢失。
  2. 确认号ack(Acknowledgment Number ):占32位,表示这个包的确认号。首先意味着已经收到对方了多少字节数据,其次告诉对方接下来的包的seq要从ack确定的数值继续接力。
  3. 标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,
  • ACK:确认序号有效
  • FIN:释放一个连接
  • SYN:发起一个新连接。
握手的逻辑

第一步:客户端向服务器发送连接申请(SYN=1)同时携带序列号(seq=n),表示要建立TCP连接

​ SYN=1;seq=n

第二步:服务端回复客户端申请连接(SYN=1)和序列号(seq=s)并携带确认信息(ACK=1)和客户端带来的序列号并+1作为确认号(ack=n+1)

​ SYN=1;seq=s;ACK=1;ack=n+1

第三步:客户端收到服务器响应的验证请求,再将自身之前的系列号+1(seq=n+1)和确认号(ACK=1)和服务器返回的seq=s作为seq发回给服务器

​ seq=s+1;ACK=1;ack=n+1

四次挥手

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告

诉被动关闭方:我已经不会再给你发数据了(当 然,在fin包之前发送出去的数据,如果没有收到对应的

ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个

FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动

关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成

四次挥手。



HTML:超文本标记语言

XML:可扩展标记语言。

HTTPS:SSL/TLS加密,默认工作在TCP协议443端口

对称加密:AES

由客户端/服务端的其中一方生成密钥并传给另一方,以便进行加密互相传输并解密,但如果用户很多时所有用户公用一个密钥,一旦某一个用户密钥被劫持,所有数据都将成为明文从而被盗取

非对称加密:RSA

有服务端生成两个密钥,公钥和私钥,公钥加密数据只有私钥可解开,反之亦然。因为两个密钥是要配对使用导致每个用户都有一套和服务器配对的密钥,因此运算速度很慢。所以一般都是第一次连接有服务器发送公钥给客户端,客户端收到后在本地生成一套对称加密的密钥使用公钥加密后发送给服务端,服务端通过私钥解密获取密钥,双方之后都使用这个对称加密的密钥

组合加密的隐藏问题:

当黑客劫持了服务器发送给客户端的公钥A后,仿造出公钥B,私钥B并冒充服务器向客户端发送公钥B,当用户向服务器发送生成的密钥C(对称加密)时黑客再次劫持,通过私钥B解密出密钥C,并通过此前劫持的公钥A加密密钥C并发送给服务端,此时黑客已获取公钥A和密钥C,此后只要使用服务器使用私钥A和密钥C时黑客都可以解密

证书机制:

本质:网站的身份凭证,由CA机构签发,内含公钥、持有者信息和数字签名。用于解决服务端向客户端发送的公钥是不是黑客伪造的,

服务端准备:生成密钥对,将证书和私钥部署在服务器。

客户端验证:设备预置根证书(来自CA厂商),用于校验服务器证书的签名,验证通过后提取公钥。

流程时机:在HTTPS握手阶段,服务端将证书下发给客户端,客户端验证成功即获得公钥。

中间人攻击:

因为http是明文传输的,明文传输在经过多层中间代理服务器,路由器,WiFi,通讯服务运营商等多个物理节点,在过程中被劫持,可能导致信息泄露,被篡改而未察觉,这就是中间人攻击

加密算法
分类 代表算法 已破解 核心用途 速度
非对称 RSA、ECC、SM2 密钥分发、数字签名 极慢
哈希 SHA-256、SM3 MD5、SHA-1 校验完整性、存密码 较快
对称 AES、SM4 DES,3DES 大数据量加密(文件、流) 极快
密钥交换 ECDHE、DH 协商临时会话密钥 中等

URL:域名等可以直接访问的

URI:只会识别ASCALL和encodeURI(已废弃)会把字段中非ASCLL码转为可识别的16进制然后前面加%

ARP(地址解析协议)

介绍:是工作在局域网中的网络协议,核心功能是通过目标设备的 IP地址 查询其对应的 MAC地址(物理硬件地址),从而实现局域网内的数据帧准确交付。

以下是其作用、原理和弊端的极简回答:

ARP作用

解决网络层(IP)与数据链路层(MAC)之间的地址映射问题。当主机只知道目的地IP,不知道其MAC时,ARP负责“翻译”出MAC,以便封装数据帧发送。

ARP工作原理(核心四步)
  1. 查缓存:主机先查本地的 ARP缓存表,若有对应MAC则直接使用。
  2. 发广播:若无记录,主机在局域网内发送 广播ARP请求包(内容:“谁的IP是192.168.1.1?请把你的MAC告诉我”)。
  3. 单播回应:拥有该IP的目标主机收到后,单播回复一个ARP应答包(内容:“我是,我的MAC是AA:BB:CC:DD:EE:FF”)。

更新缓存:请求方收到应答,将映射关系存入缓存(通常保留几分钟至几十分钟),后续通信直接使用。

ARP主要弊端(安全缺陷)
  1. 无身份验证:ARP协议完全“信任”收到的应答包,不验证发送者是否真的是该IP的拥有者。
  2. 易被欺骗(ARP欺骗/中间人攻击):攻击者伪造虚假的ARP应答包,让受害者将流量误发往攻击者机器,从而实现窃听、篡改或断网。
  3. 广播风暴风险:大量设备同时请求ARP或攻击者发送海量虚假ARP包,会耗尽网络带宽和交换机资源。
  4. 总结:ARP是局域网通信的“翻译官”,依赖广播查询和缓存机制,但因缺乏安全校验,是局域网安全中最薄弱的环节之一。

网安里边,前端校验约等于没有校验,因为可以拦截请求过程中再次修改数据包

连接数据库 mysql -uroot - proot -h 127.0.0.1 -p 3306



各数据库汇总
数据库类型 默认端口号 特有系统函数或查询
MySQL / mariaDB 3306 select version();
PostgreSQL 5432 select version();
Microsoft SQL Server 1433 select @@version();
Oracle Database 1521 select * from v$version();
MongoDB 27017 db.version()
Redis 6379 info server
数据库两大分类

数据库分为关系型和发非关系型数据库,关系型指的数据之间有关联,非关系型指的数据之间没有关联

information_schema:
  1. 本质:information_schema 是 MySQL 自带的系统数据库,但它是只读的虚拟库(数据存在内存里,不占硬盘数据空间)。
  2. 内容:它不存用户业务数据,只存 “元数据”(即数据库的结构信息,如:有哪些库、哪些表、表的字段叫什么、是什么类型)。
  3. 作用:它是 MySQL 的 “数据字典”,专门用来查询和管理数据库的结构,客户端软件(如 Navicat)的“表结构树”就是靠它显示的。
-- 在information_schema/schemata/schema_name中存储了主机mysql所有库名
-- 1. 查当前库有哪些表(记住 TABLES)
select table_name from information_schema.tables where table_schema = DATABASE();

-- 2. 查某张表有哪些字段(记住 COLUMNS)
SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'UserTable';
select column_name, data_type from information_schema.columns where table_name = 'UserTable'

-- 3. 查哪些表里包含 'id' 字段(体现它的强大)
SELECT TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'id';
sql常用指令
-- 创建product库
create database product; 

 -- 删除product库
drop database product; 

-- 修改库名product=>prod
alter database product collate prod;  

-- 创建表以及初始化字段
create table users1(id int,userId int,name varchar(66),age int,addr varchar(255),dep varchar(66));

-- 删除表中指定的字段
alter table users drop column count;

-- 插入一条只有第一个字段为10的数据
insert into user values(10);

-- 插入一条数据(可指定插入某几个字段,只要一一对应)
insert into users (id,uid,name,addr,age) values (1,1001,'李华','shanghai',18);

-- 修改users表中userId=>uid
alter table users change column userId uid int; 

-- 在指定位置添加 name 字段(比如在 userid 后面 after/before)
alter table users add column count int after dep;

-- 修改id为7的name和addr字段值(修改单个字段可把where id 跟在set后面)
update users set name = '小爱' ,addr = '海南' where id = 7;

-- 删除指定数据
delete from users where id = 8;

-- 创建用户user1 密码111111
create user 'user1'@'localhost' identified by '111111';

-- 删除用户
drop user 'user1'@'localhost';

-- 赋予user1对users表的增删改的权限
grant insert, select, delete on cc.users to 'user1'@'localhost';

-- 查看用户权限
show grants for 'user1'@'localhost';

-- 撤销用户写入,删除的权限
revoke insert,delete on cc.users from 'user1'@'localhost';

-- 修改用户密码
alter user 'user1'@'localhost' identified by '123456';

-- 查询users表
select * from users;

-- 查询表中的指定字段
select  id, name, addr from users;

-- where 条件查询
select * from users where age>20;

-- 条件查询符合条件数据的指定字段
select id, name, addr from users where age > 20;

-- 多条件查询 and / or
select id, name,addr,age from users where age >= 19 and addr = '上海';

-- 模糊查询 %:分为左侧和右侧模糊查询
select * from users where addr like '上%';

-- 模糊查询 _ :代替一个字符
select * from users where addr like '_上_';

-- 去重并输出指定字段
select distinct addr from users;

-- 数据去重 + 条件筛选
select distinct age, addr from users where age>20;

-- 排序,主条件排序,副条件在主条件重复时生效
select * from users order by age desc, uid desc;

-- 分组,并group_concat(name)拼接组员name信息 / count(*)分组后组员数量
select addr,group_concat(name separator '/') from users group by addr;

-- 多条件分组,同时满足多个条件的为一组,分出当前组count最大值,以及组中最大值的name
-- as:重写输出表的title列名
-- separator:取消group_concat默认拼接符号
-- substring_index(str, delim, count),它在字符串 str 中搜索分隔符 delim,并返回分隔符出现 count 次之前(如果 count 为正)或之后(如果 count 为负)的子字符串。
select addr,age, count(*) as total_rows,max(count) as max_count,substring_index(group_concat(name order by count desc separator ','), ',',1) as max_count_name from users group by addr,age;

-- 分组后过滤having:用于分组之后的条件筛选
select addr, age,count(*), avg(count) from users group by addr, age having avg(count)>500;

-- 限定输出条数
select * from users order by age desc limit 5;

-- 限定排除前几条后返回指定条数
select * from users order by age desc limit 5 offset 2;

-- 查询当前库的所有表名
select table_name from information_schema.tables where table_schema = database();

-- 查询当前库中users表中所有字段和数据
select column_name from information_schema.columns where table_name = 'users' and table_schema = database();

-- 查询当前连接的mysql数据库中所有的库
select schema_name from information_schema.schemata;

-- 查询当前库中users表的所有字段名
select column_name from information_schema.`columns` where table_name = 'users' and table_schema = database();



防火墙

防火墙基础概念

防火墙是一种网络安全设备(硬件或软件),它根据预设的规则,对进出的网络流量进行允许(放行)或拒绝(拦截)。

核心工作模式(两大策略)

防火墙通常遵循两种基本策略,这决定了它的“性格”:

  • 黑名单(默认允许):默认大门敞开,只拦截黑名单上的“坏人”。(方便,但有漏网之鱼的风险)
  • 白名单(默认拒绝):默认大门紧闭,只允许白名单上的“好人”通过。(更安全,是金融、政府等机构的标配)

当出现waf大量误报被拦截时:

第一步:优先放行将拦截改为告警状态,使业务优先回到正常运行状态

第二步:系统性分析,收集误报的关键信息

  1. 被误拦的请求详情:包括完整的URL、请求方法(GET/POST等)、请求头(Headers)和请求体(Body)。
  2. 触发拦截的规则ID:这是最关键的信息,能直接定位到是哪条规则导致了误报。
  3. 精确的时间戳:便于在WAF日志中快速检索。
  4. 来源IP:帮助判断是否为特定来源的请求触发了问题。

第三步:

蜜罐:是一种主动的安全性防御设备
0day,1day,nday:

0day:漏洞被发现后,厂商尚未发布官方补丁,或者防御方(蓝队)对此漏洞完全不知情。所谓“零日”,意味着防御者没有“0天”的提前量去准备

1day:漏洞已经公开,且厂商已发布官方补丁,但大量用户尚未完成补丁更新。通常指补丁发布后的 “窗口期”

nday:漏洞已公开数月甚至数年,补丁早已发布,利用代码(Exp)已在网上广泛流传(如Metasploit框架中集成)

Netfilter:

介绍:Linux内核中的一个网络数据包处理框架(工具),防火墙的实现者

功能:网络地址转换,数据包内容修改,数据包过滤的防火墙功能

4 种防火墙类型
  1. 软件防火墙:安装在操作系统内部的软件(如 Windows 自带的 Defender 防火墙,或 Linux 的 iptables/firewalld)。用于保护单台主机,资源占用小。
  2. 硬件防火墙:独立的物理网络设备,部署在机房或网络入口。性能强大,用于保护整个局域网(比如企业级的 Fortinet、深信服)。
  3. Web应用防火墙(WAF):专注于保护网站和 Web 服务器,专门拦截 SQL注入、XSS跨站脚本攻击等应用层的入侵行为。
  4. 下一代防火墙(NGFW):在传统防火墙只检查 IP 和端口的基础上,加入了**深度包检测(DPI)和入侵防御(IPS)**功能,能识别出具体的应用程序(如微信、迅雷)并进行精细管控。

极简记忆小卡片(复习快速看)

  1. 防火墙:网络大⻔,控制进出流量,不能杀毒
  2. DPI:拆开数据包看里面内容;传统防火墙只看包头
  3. 白名单顺序:先写允许,最后一条拒绝全部,顺序不能颠倒
  4. Netfilter 内核真正处理包;iptables 只是敲命令写规则的工具
  5. firewalld 靠 zone 区域管理;iptables 靠表 + 链;ufw 是 Ubuntu 简化版 filter 表负责过滤;nat 表负责 IP 地址转换、端口映射
  6. iptables 规则内存生效,重启丢失,需要保存;加 permanent 永久生效

iptables应用

四表
  1. filter:默认表,数据包过滤(允许/拒绝)
  2. nat:负责网络地址转换(NAT)端口映射、IP 伪装
  3. mangle:拆解报文作出修改,并重新封装的功能
  4. raw:关闭nat表上启用的连接追踪机制
五链
  1. INPUT:处理流向本机的入站流量
  2. OUTPUT:处理从本机发出的出站流量
  3. FORWARD:处理转发的流量(本机不是目的地时)
  4. PREROUTING:在路由前修改数据包(通常用于NAT)
  5. POSTROUTING:在路由后修改数据包(通常用于NAT)

需要记得端口号

端口号 作用
80 http
443 https
53 dns
22 ssh
23 Telnet(远程登录)
1433 SQL serve
1521 Oracle
3306 mysql
5432 PostgreSQL
6379 Redis
8080 web端口
27017 MongoDB

1. XSS(跨站脚本攻击)

  • 定义:一种代码注入攻击,攻击者在网页中注入恶意脚本(通常是JavaScript)。
  • 目标:用户(客户端)。
  • 后果:窃取用户的Cookie、会话令牌、密码,或劫持用户账号、篡改页面内容。
  • 核心成因:网站将用户输入当作可执行代码输出,混淆了“数据”与“代码”的边界。

2. DoS(拒绝服务攻击)

  • 定义:攻击者利用单台机器,向目标服务器发送大量请求或利用漏洞,耗尽服务器的CPU、内存、带宽等资源。
  • 特点:一对一,单点发起。
  • 后果:导致服务器无法正常响应合法用户的请求,服务瘫痪。

3. DDoS(分布式拒绝服务攻击)

  • 定义:DoS的升级版,攻击者利用多台被控制的傀儡机器(僵尸网络)同时向目标发起海量流量攻击。
  • 特点:多对一,流量规模巨大,来源分散。
  • 后果:更难防御,能轻松压垮带宽或基础设施,是当前最常见的网络攻击之一。

4. CC(挑战黑洞攻击 / 应用层攻击)

  • 定义:DDoS的一种特殊形式,主要针对应用层(L7)。攻击者模拟真实用户,高频发起消耗资源的业务请求(如大量数据库查询、搜索、登录)。
  • 特点:流量看似“合法”,单次请求量小但频率极高,专门耗尽后端计算资源(如CPU、数据库连接池)。
  • 区别:普通DDoS“堵路”(塞满带宽),CC攻击“烧脑”(耗尽应用算力)。

提权问题

提权路径 对应等保控制点 核查要点
SUID/SGID 访问控制——最小权限 是否存在非必要的SUID程序
Sudo配置 访问控制——最小权限 /etc/sudoers是否有NOPASSWD:ALL
计划任务 访问控制 + 安全审计 Cron脚本权限、是否有审计日志
内核漏洞 入侵防范——漏洞修补 内核版本、补丁记录
敏感文件权限 访问控制——最小权限 /etc/passwd、/etc/shadow权限
Docker组 访问控制——最小权限 哪些用户在docker组中

等保测评中重点核查的高危命令包括:rm、chmod、chown、sudo、nc。其中sudo无密码权限被明确列为高危项

识别冰蝎和哥斯拉特征

冰蝎特征:

  • content-type异常:冰蝎3.0、4.0版本连接JSP Webshell时,请求头常被设置为application/octet-stream(二进制流)
  • User-Agent随机化:冰蝎内置了常用浏览器的User-Agent,同一源IP短时间内频繁更新User-Agent,且访问的是同一个Webshell地址

哥斯拉(Godzilla)

  • 三阶段通信模式,"大数据-小数据-小数据"三阶段通信模式
  • Cookie值末尾带有一个多余的分号(如 JSESSIONID=xxx;)。这是由于哥斯拉的Java HTTP客户端库自动添加所致,在正常Web应用中极少出现。该特征在v3.0版本之前一直存在
  • 响应体MD5+Base64结构,将一个32位MD5字符串按一半拆分,分别放在Base64编码数据的前后两部分,即 md5前十六位 + base64 + md5后十六位

基础练习

1. GET 与 POST 区别

  • get用于获取资源和查寻,参数在url上明文显示,不参与服务端数据更新和服务端状态,可被缓存进行收藏或历史记录查看,长度限制于url的长度,不易放敏感信息
  • post用于数据(表单,目录,条目等)的更新和新增,参数在body请求体中,可参与服务器数据的变更状态,一般不缓存,长度由配置决定,一般用于from和json

2. Cookie 与 Session 区别

  • Cookie 只能存储在客户端浏览器,一般只有几KB,可被窃取,篡改,通过Expires / Max-Age设置生命周期
  • Session存储于服务端如Redis,用户端只保留Session ID放于cooker中,存储大小取决于服务器设置,Session ID也有窃取风险,但可通过服务端删除Session或者设置过期使SessionID失效,

3. JWT 与 Session 区别

  • JWT 无状态、自包含,客户端保存,靠签名验证,难主动失效;Session 有状态,服务端保存,易主动失效。

5. 常见请求头作用

  • Host 目标主机;User-Agent 客户端信息;Accept 可接受响应类型;Content-Type 请求体类型;Authorization 认证信息;Cookie 携带 Cookie;Origin 跨域来源;Referer 来源页;Cache-Control 缓存策略;If-None-Match 协商缓存

6. 什么是同源策略

  • 协议、域名(IP)、端口完全相同才算同源;浏览器限制跨源使用JS或脚本去读取 DOM、Cookie、localStorage 和响应内容

7. XSS 为什么能窃取 Token

  • XSS 脚本被注入目标页面后,运行在目标源下,可读取 localStorage、非 HttpOnly(只读) Cookie,并通过请求发送给攻击者。

8. 为什么 JWT 不适合存储敏感数据

  • JWT 的 payload 只是 Base64 编码,可被解码查看;签名只保证完整性,不保证机密性。



1. 说一下 Web 渗透测试流程

核心:授权 → 信息收集 → 漏洞发现 → 验证利用 → 报告复测。

  • 授权与范围确认:明确目标、IP/域名、时间、禁止事项,必须获得书面授权。
  • 信息收集:WHOIS域名查询、DNS、子域名、端口、目录、指纹、邮箱、泄露信息。
  • 漏洞扫描与手动测试:AWVS、Nessus、Burp、Nmap 等,结合 OWASP Top 10 手动验证。
  • 漏洞验证与利用:编写/使用 POC,确认危害,获取权限或数据。**
  • 后渗透:提权、横向移动、权限维持(仅在授权范围内)。
  • 清理与报告:整理漏洞详情、危害、复现步骤、修复建议。
  • 复测:修复后验证漏洞是否闭环。

3. 常见 Web 中间件有哪些

  • Web 服务器:Nginx、Apache HTTP Server、IIS、Lighttpd、Caddy。
  • Java 应用服务器:Tomcat、Jetty、WebLogic、WebSphere、JBoss/WildFly、Undertow。
  • 其他:Node.js(Express/Koa)、PHP-FPM、Kestrel(.NET)、Gunicorn/uWSGI(Python)。

4. 如何判断网站使用的开发语言

  • URL 后缀:.php、.jsp、.do、.action、.asp、.aspx、.py、.rb、.html.。
  • 响应头:X-Powered-By、Server、X-AspNet-Version。
  • Cookie 名称:PHPSESSID → PHP;JSESSIONID → Java;ASP.NET_SessionId → .NET。
  • 错误页面:堆栈信息、报错风格。
  • HTML 源码:注释、静态资源路径、meta 标签。
  • 特定文件:wp-content → WordPress/PHP;_next → Next.js;static → Django。
  • 工具:Wappalyzer、WhatWeb、BuiltWith。

5. 如何识别目标网站技术栈

  • 被动识别:响应头、Cookie、HTML 源码、URL 结构、favicon hash、robots.txt、证书信息。
  • 主动识别:Nmap NSE、Nikto、WhatWeb、Wappalyzer 插件、目录扫描。
  • 前端框架:React、Vue、Angular 的特定文件或全局变量。
  • 后端语言:结合后缀、Cookie、错误页判断。
  • 中间件/CDN/WAF:Server 头、CDN 特征、WAF 拦截页面。
  • 数据库:报错信息、特定参数、端口暴露。
  • 第三方组件:JS/CSS 版本、API 路径、CMS 特征。

病毒 木马 蠕虫的区别

这三者都是恶意软件,但核心区别在于传播方式和是否需要宿主。

维度 病毒(Virus 蠕虫(Worm) 木马(Trojan)
自我复制 能,但需依附宿主文件 能,且独立自主 不能
传播方式 感染文件,靠用户执行或交换文件传播 利用网络漏洞、邮件、共享等自动传播 伪装成正常软件,靠用户主动下载运行
是否需要宿主 需要(寄生在文件、引导区等) 不需要 不需要,但需要用户触发
主要目的 破坏、感染、扩散 快速扩散、消耗网络/系统资源 隐蔽控制、窃密、开后门
典型行为 感染.exe、文档,触发后感染更多文件 扫描网络、自我复制、造成拥堵 远程控制、盗号、下载其他恶意软件
是否立即暴露 可能明显(文件损坏、弹窗) 常因网络变慢、扫描流量大而暴露 通常长期隐蔽,用户难察觉
简单区分

病毒:像"寄生虫”,必须寄生在文件里,你运行了带毒文件它才活。 蠕虫:像“传染病”,自己就能跑,不需要你点任何东西,通过网络自动扩散。 木马:像"间谍”,不繁殖、不扩散,只伪装成好东西骗你打开,然后偷偷控制你的机器。

容易混淆的点

现实中很多恶意软件是混合体。例如: 蠕虫式病毒:既感染文件,又能通过网络自动传播。 木马下载器:木马本身不复制,但运行后会下载蠕虫或病毒,造成"木马带动传播”的效果 勒索软件:通常通过木马或漏洞投递,加密文件后勒索,它本身可能不具备自我复制能力。



XSS****分类

什么 JWT 不适合存储敏感数据

  • 反射型XSS :你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击
  • 存储型XSS :你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发
  • DOM型XSS :主要利用DOM相关的操作,修改了页面,引发的惨案











★shell脚本执行方式

  1. 直接调用解释器:bash test.sh
  2. 赋予执行权限:chmod +x test.sh & ./test.sh
  3. 当前Shell执行:source test.sh / . test.sh
Shell 类型 Bash(默认)、Zsh、Sh、Csh
脚本后缀 .sh(非必须,但规范)

AWK 简介

awk [options] 'pattern { action }' file1 file2 ...
  1. 赋值等号两边不能有空格:name=value ✅,name = value ❌。
  2. [ ] 内部必须加空格:[ "$a" = "$b" ] ✅,["$a"="$b"] ❌。
  3. 数值比较用 -eq,字符串用 ==(在 [[ ]] 中)。
  4. 双小括号 (( )) 内变量可不加 $:(( a < b )) ✅,无需写 $a。
  5. source 执行脚本可保留变量,适合加载配置。
  6. 函数返回值:return 只能返回整数状态码(0~255),返回字符串用 echo + 命令替换。
  • AWK 是一种报告生成器和文本格式化工具,名字取自三位创始人(Alfred Aho, Peter Weinberger, Brian Kernighan)姓氏首字母。
  • Linux 中使用的通常是 gawk(GNU awk)。
  • 它本质上是一门编程语言,支持变量、数组、条件判断、循环等,可视为脚本解释器。
  • 与 grep、sed 并称“Linux三剑客”:
    • grep:擅长单纯的查找或匹配。
    • sed:擅长编辑匹配到的文本。
    • awk:擅长格式化文本,进行较复杂的处理。

注意事项(避坑指南)

  1. 引号问题:awk 程序必须用英文单引号包围,内部变量(如 $1)不要加引号,但普通字符串需加双引号。
  2. 多行写法:单引号内可以换行,Bash会显示 > 提示续行,最后闭合引号即可。
  3. 反斜杠换行:不要在单引号内使用 \ 换行,Bash 不会解释为续行,会导致语法错误。
  4. 正则中的斜杠:若正则包含 /,需转义(\/)。
  5. {n,m} 次数匹配:可能需要加上 --posix 或 --re-interval 选项。
  6. printf 不换行:记得加 \n。
  7. asort 会丢弃关联键:若需保留键,使用外部 sort 或自己实现排序。

SED 简介

  • sed [选项] '脚本命令' 文件名

  • 全称:Stream Editor(流编辑器)。

  • 工作方式:sed 逐行处理文本,将当前处理的行读入临时缓冲区(称为模式空间,Pattern Space),然后对缓冲区中的内容进行编辑处理,处理完成后将内容输出到屏幕。

  • 重要特性:默认不修改源文件,除非使用 -i 选项。所有操作都在内存中完成。

  • 基本语法

    awk [options] 'pattern { action }' file1 file2 ...
    
    • options:常用选项如 -F(指定输入分隔符)、-v(设置变量)。
    • pattern:匹配条件(可省略,省略即匹配所有行)。
    • action:对匹配行执行的动作(如 print、printf),必须用 {} 包围。

注意事项(避坑指南)

  1. 引号问题:awk 程序必须用英文单引号包围,内部变量(如 $1)不要加引号,但普通字符串需加双引号。
  2. 多行写法:单引号内可以换行,Bash会显示 > 提示续行,最后闭合引号即可。
  3. 反斜杠换行:不要在单引号内使用 \ 换行,Bash 不会解释为续行,会导致语法错误。
  4. 正则中的斜杠:若正则包含 /,需转义(\/)。
  5. {n,m} 次数匹配:可能需要加上 --posix 或 --re-interval 选项。
  6. printf 不换行:记得加 \n。
  7. asort 会丢弃关联键:若需保留键,使用外部 sort 或自己实现排序。



javascript

⭐html负责页面的构建,是网页的骨架

⭐css负责页面的美化

⭐js负责与用户的交互,对大小写敏感

⭐xml:可扩展标记语言,xml要求标签必须严格的嵌套

库站分离:服务器和数据库不在一个同一主机

do while会先执行一次,条件语句为true时继续执行后续

⭐对于数组判断js返回的是对象

⭐url中可以获取到的信息包括,协议(https),地址,路径,传参方式

问:扫描到数据库,但端口不是3306可能是因为什么?

答:修改了默认端口;库站分离



document 内置对象

JS能够控制/改变HTML的输出流,对事件做反应,改变HTML内容,图像,样式

验证用户输入

JavaScript输出没有打印的输出函数

输出数据

使用window.alert()弹出警告框

使用document.write()方法将内容写道HTML文档中

使用innerHTML写入到HTML元素

使用consode.log() 写入到浏览器的控制台

Alert、window.alert弹窗事件

onclick点击,事件被点击触发后置函数调用的事件句柄

onerror 在加载文档或图像时发生错误

onfocus 元素获取焦点时触发

onsubmit表单提交时触发

for-循环代码块,根据循环条件中得参数对象内容长度作为循环次数

or-循环代码块

for in-循坏遍历对象的属性 key:value

while-当指定的条件为true时循环指定的代码块

do-while-同样当do中指定的条件为true时进入while循环

ipconfig /flushdns 刷新本地host文件中的dns配置



PHP

⭐evel():危险函数

⭐evel/execute:函数执行客户端命令的内容

gettype(var):返回类型字符串(如integer、string)vardump(var):返回类型字符串(如 integer、string) var_dump(var):返回类型字符串(如integer、string)vard​ump(var):输出类型和值(详细调试)

文件包含函数

用于将其他PHP文件的内容包含到当前文件中,避免重复代码。

函数 特点
include 包含文件,若文件不存在则报错(警告),继续执行后续代码。
require 包含文件,若文件不存在则报错(致命错误),终止执行。
include_once 同include,但仅包含一次(避免重复包含)。
require_once 同 require,但仅包含一次。

include中被包含的文件都会被当作代码执行,无论什么格式

file_get_contents:读取文件

file_put_contents:覆盖/写入文件

fclose:释放占用

fopen:打开本地文件

fread:读取文件内容,可指定读取长度

readdir:函数读取目录内容,把resource资源类型的内容转为基础可读内容



python

字符串支持下标索引



发现甲方的站点被非法篡改了,该怎么操作 先隔离并切换备份程序,保全证据,保证站点先正常运行 查看日志,寻找异常请求,修补漏洞,限权加固

avatar

YeLuo

在代码、学术与分子动力学模拟间穿梭的普通人。近期正埋头于 GROMACS 模拟研究与神经网络计算。

RECOMMENDED

UPLOADTEST benign

2026-10-10T16:51:29

UPLOADTEST benign

2026-10-10T16:51:28

AWK使用笔记总结

2026-09-23T16:59:58

Table of Contents