最近看到了一年前的入队要求,然后昨天又部署了一个更加方便管理知识库的博客架构,于是就想着好好地再整理一次知识吧。这次至少是可以更好地维护知识库了。
一、计算机网络基本概念
1、IP
a. 定义与作用
- 定义:IP 是 Internet Protocol 地址,用于在网络中标识一台设备/主机,实现寻址和路由。
- 作用:找到“哪一台机器”。
b. 常见形式
- IPv4:
192.168.1.1、8.8.8.8,32 位,点分十进制。 - IPv6:
2001:db8::1,128 位,冒号十六进制。
c. 分类
- 公网 IP:可在互联网上被访问。
- 私网 IP:如
192.168.x.x、10.x.x.x、172.16.x.x ~ 172.31.x.x,常用于局域网。
d. 例子
127.0.0.1 表示本机回环地址,以及 Localhost 等等。像西电平台就常用 127.0.0.1:58817 等等作为本地服务地址。
2、域名
a. 定义与作用
- 定义:域名是给人记忆和使用的名称,用来代替难记的 IP 地址。
- 作用:方便访问网站或服务。
b. 解析过程
域名通过 DNS 解析成对应的 IP 地址。
c. 结构
从右到左层级降低,例如:
www.example.com.com:顶级域example:二级域www:子域/主机名
d. 例子与注意
- 例子:
www.baidu.com、www.google.com。 - 注意:域名不是网址的全部。网址通常还包含协议、端口、路径等,如
https://www.example.com:443/index.html
3、端口
a. 定义与作用
- 定义:端口是传输层协议 TCP/UDP 中用来标识主机上具体应用或进程的编号。
- 作用:找到“这台机器上的哪个服务”。
b. 范围
0 ~ 65535
0 ~ 1023:知名端口/系统端口1024 ~ 49151:注册端口49152 ~ 65535:动态/私有端口
c. 常见端口
22:SSH53:DNS80:HTTP443:HTTPS3306:MySQL6379:Redis3389:Windows 远程桌面
d. 例子
127.0.0.1:8080 表示访问本机的 8080 端口服务。
二、网络流量数据包与 HTTP 基础
Burp Suite 抓到的“数据包”本质上是 HTTP/HTTPS 请求报文和响应报文。
HTTPS 只要浏览器/客户端信任了 Burp 的 CA 证书,Burp 就能中间人解密,显示出来的格式和普通 HTTP 几乎一样。
在 Burp 的 Proxy -> HTTP history 或 Intercept 里,通常成对看到:
- 上半部分/Request:浏览器发出去的请求
- 下半部分/Response:服务器返回的响应
1、Burp Suite 抓包原理
Burp 作为中间人代理,浏览器/客户端把请求发给 Burp,Burp 再转发给服务器;服务器返回响应后,Burp 再交回客户端。
HTTPS 下,Burp 使用自己的 CA 证书与客户端建立 TLS,再与服务器建立另一条 TLS,从而解密并查看明文报文。
2、简单数据包示例
a. GET 请求示例
GET /index.php?id=1 HTTP/1.1Host: www.example.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9Accept-Language: zh-CN,zh;q=0.9Connection: closeCookie: PHPSESSID=abc123注意:GET 请求通常没有请求体,头部后面会有一个空行。
对应响应可能像:
HTTP/1.1 200 OKDate: Mon, 12 Oct 2026 08:00:00 GMTServer: Apache/2.4.41 (Ubuntu)Content-Type: text/html; charset=UTF-8Content-Length: 123Connection: close
<!DOCTYPE html><html><head><title>Example</title></head><body>Hello</body></html>b. POST 表单请求示例
POST /login HTTP/1.1Host: example.comUser-Agent: Mozilla/5.0Content-Type: application/x-www-form-urlencodedContent-Length: 27Cookie: sessionid=abc123Connection: close
username=admin&password=123对应响应:
HTTP/1.1 302 FoundServer: nginxDate: Mon, 12 Oct 2026 08:00:00 GMTLocation: /dashboardSet-Cookie: sessionid=xyz789; Path=/; HttpOnlyContent-Length: 0c. POST JSON 请求示例
POST /api/user HTTP/1.1Host: api.example.comAuthorization: Bearer eyJhbGciOiJIUzI1...Content-Type: application/jsonContent-Length: 24Connection: close
{"name":"test","age":18}响应:
HTTP/1.1 200 OKContent-Type: application/json; charset=utf-8Content-Length: 22Connection: close
{"id":1,"name":"test"}3、常见 HTTP 头部字段
a. 请求头:浏览器/客户端发给服务器
| 头部 | 干什么用 |
|---|---|
Host | 指定目标域名和端口,用于服务器区分虚拟主机 |
User-Agent | 标识客户端/浏览器,服务端用来适配、风控、统计 |
Accept | 告诉服务器我能接收什么类型,如 text/html、application/json |
Accept-Encoding | 告诉服务器我能接收什么压缩,如 gzip、deflate |
Accept-Language | 语言偏好,如 zh-CN |
Cookie | 携带会话、身份、偏好等,用于服务端识别用户 |
Authorization | 认证凭证,如 Bearer token、Basic base64 |
Referer | 从哪个页面跳过来的,常用于统计和防盗链 |
Origin | 跨域请求来源,配合 CORS 使用 |
Content-Type | 请求体是什么格式,如 application/json、application/x-www-form-urlencoded |
Content-Length | 请求体字节长度,服务器靠它知道读多少 |
Connection | 连接管理,如 close 关闭,keep-alive 复用 |
X-Forwarded-For | 代理链中的客户端 IP,常被用来伪造来源 IP |
X-Requested-With | 常标记 AJAX 请求,如 XMLHttpRequest |
X-CSRF-Token | CSRF 防护令牌 |
Range | 分段请求,如断点续传、视频拖动 |
If-None-Match | 缓存验证,配合 ETag |
If-Modified-Since | 缓存验证,配合 Last-Modified |
Upgrade-Insecure-Requests | 请求浏览器升级到 HTTPS |
Sec-Fetch-* | 浏览器请求上下文,如 Sec-Fetch-Mode、Sec-Fetch-Site |
b. 响应头:服务器返回给客户端
| 头部 | 干什么用 |
|---|---|
Location | 重定向目标,常见于 301/302/303/307/308 |
Set-Cookie | 服务器让浏览器保存 Cookie |
Content-Type | 响应体类型,如 text/html、application/json |
Content-Length | 响应体字节长度 |
Content-Encoding | 响应体压缩方式,如 gzip |
Transfer-Encoding | 分块传输,如 chunked |
Server | 服务器软件信息,如 nginx、Apache |
Date | 响应生成时间 |
Cache-Control | 缓存策略,如 no-cache、max-age=3600 |
Expires | 缓存过期时间 |
ETag | 资源版本标识,用于缓存验证 |
Last-Modified | 资源最后修改时间 |
Vary | 告诉缓存按哪些请求头区分版本 |
Access-Control-Allow-Origin | CORS 允许哪些来源跨域访问 |
Access-Control-Allow-Credentials | CORS 是否允许携带凭证 |
Access-Control-Allow-Methods | CORS 允许的请求方法 |
Access-Control-Allow-Headers | CORS 允许的请求头 |
WWW-Authenticate | 401 认证挑战,如 Basic realm="x" |
Strict-Transport-Security | HSTS,强制浏览器用 HTTPS |
Content-Security-Policy | CSP,限制脚本、样式等来源,防 XSS |
X-Frame-Options | 防点击劫持,控制能否被 iframe 嵌入 |
X-Content-Type-Options | 禁止 MIME 嗅探,常见 nosniff |
Referrer-Policy | 控制 Referer 发送策略 |
Permissions-Policy | 控制浏览器特性权限,如摄像头、定位 |
X-Powered-By | 技术栈信息,如 PHP/8.1 |
Refresh | 定时刷新或跳转,如 Refresh: 0; url=/login |
c. 通用/实体头:请求和响应都可能出现
| 头部 | 作用 |
|---|---|
Connection | 当前连接是否保持 |
Content-Type | body 类型 |
Content-Length | body 长度 |
Content-Encoding | body 压缩方式 |
Transfer-Encoding | body 传输方式,如分块 |
Cache-Control | 缓存策略 |
Pragma | 旧版缓存控制,常配 no-cache |
Via | 经过哪些代理 |
Upgrade | 协议升级,如 WebSocket |
TE | 传输编码偏好 |
Trailer | 分块传输末尾附加头 |
d. Burp 里比较重要的内容
- 认证/会话身份:
Cookie、Authorization、Set-Cookie - 越权/伪造:
X-Forwarded-For、Host、Origin - 重定向:
Location - 文件上传/下载:
Content-Type、Content-Disposition - 缓存:
Cache-Control、ETag、Last-Modified - 跨域:
Origin、Access-Control-Allow-* - 请求边界:
Content-Length、Transfer-Encoding - 安全策略:
CSP、HSTS、X-Frame-Options
4、常见 HTTP 状态码
a. 状态码分类
HTTP 状态码是服务器对请求处理结果的简短说明,分五类:
- 1xx:信息性,请求已收到,继续处理
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
Burp Suite 抓包时,状态码在响应第一行,例如:
HTTP/1.1 200 OKHTTP/1.1 302 FoundHTTP/1.1 403 Forbiddenb. 常见 2xx 成功
| 状态码 | 含义 | 干什么用 |
|---|---|---|
| 200 OK | 请求成功 | 正常返回网页、JSON、文件等 |
| 201 Created | 已创建 | 常见于 POST 新建资源,可能带 Location |
| 202 Accepted | 已接受 | 请求已收到,但异步处理,不一定完成 |
| 204 No Content | 成功但无内容 | 常用于删除、更新成功,不返回 body |
| 206 Partial Content | 部分内容 | 断点续传、视频拖动、分片下载 |
c. 常见 3xx 重定向
| 状态码 | 含义 | 干什么用 |
|---|---|---|
| 301 Moved Permanently | 永久重定向 | 旧地址永久跳到新地址,搜索引擎会更新 |
| 302 Found | 临时重定向 | 临时跳转,常见登录后跳转 |
| 303 See Other | 查看其他地址 | 通常让客户端用 GET 访问新地址,POST 后防重复提交 |
| 304 Not Modified | 未修改 | 缓存还有效,直接用本地缓存,不返回 body |
| 307 Temporary Redirect | 临时重定向 | 和 302 类似,但保持原请求方法,如 POST 仍 POST |
| 308 Permanent Redirect | 永久重定向 | 和 301 类似,但保持原请求方法 |
d. 常见 4xx 客户端错误
| 状态码 | 含义 | 干什么用 |
|---|---|---|
| 400 Bad Request | 请求错误 | 参数格式错、语法错、缺少必要字段 |
| 401 Unauthorized | 未认证 | 需要登录或凭证,常带 WWW-Authenticate |
| 403 Forbidden | 禁止访问 | 已认证但无权限,或服务器直接拒绝 |
| 404 Not Found | 未找到 | 资源不存在,也常用于隐藏真实路径 |
| 405 Method Not Allowed | 方法不允许 | 如接口只允许 POST,你用了 GET |
| 406 Not Acceptable | 不可接受 | 服务器无法满足 Accept 头要求 |
| 408 Request Timeout | 请求超时 | 客户端太久没发完请求 |
| 409 Conflict | 冲突 | 重复创建、版本冲突等 |
| 410 Gone | 已删除 | 资源永久不存在,比 404 更明确 |
| 413 Payload Too Large | 请求体太大 | 上传文件或 POST 数据超过限制 |
| 414 URI Too Long | URI 太长 | 请求地址过长 |
| 415 Unsupported Media Type | 媒体类型不支持 | 如接口要 JSON,你发了 XML |
| 418 I’m a teapot | 我是茶壶 | 玩笑状态码,可用于反爬 |
| 422 Unprocessable Entity | 无法处理 | 语义错误,API 校验失败常用 |
| 429 Too Many Requests | 请求过多 | 触发限流、频率限制 |
| 431 Request Header Fields Too Large | 请求头太大 | 请求头超过服务器限制 |
e. 常见 5xx 服务端错误
| 状态码 | 含义 | 干什么用 |
|---|---|---|
| 500 Internal Server Error | 服务器内部错误 | 代码异常、数据库错误、未捕获错误 |
| 501 Not Implemented | 未实现 | 服务器不支持该请求方法或功能 |
| 502 Bad Gateway | 坏网关 | 网关/代理从上游收到无效响应 |
| 503 Service Unavailable | 服务不可用 | 维护、过载、后端挂掉 |
| 504 Gateway Timeout | 网关超时 | 网关等待上游服务器超时 |
| 505 HTTP Version Not Supported | HTTP 版本不支持 | 服务器不支持请求使用的 HTTP 版本 |
f. Burp 里用状态码判断
200:成功302/301:看Location,可能测开放重定向、登录跳转401:未认证,尝试加 Cookie、Token403:无权限,尝试改方法、路径、请求头绕过404:资源不存在,也可能被用来隐藏接口405:方法不对,换 GET/POST/PUT 再试429:被限流,可能需降速或换 IP500:服务器报错,可能暴露堆栈、注入点502/503/504:后端或代理问题,不一定是攻击成功
三、HTTP 报文结构与请求方法
1、HTTP 报文结构
一个完整数据包通常长这样:
请求行 / 状态行请求头 / 响应头空行请求体 / 响应体- 请求行:
GET /index.php?id=1 HTTP/1.1 - 状态行:
HTTP/1.1 200 OK - 头部:一行一个
Key: Value - 空行:分隔头和 body
- body:表单、JSON、XML、文件等
2、常见请求方法
| 方法 | 作用 |
|---|---|
| GET | 获取资源,参数常在 URL |
| POST | 提交数据,常放 body |
| PUT | 更新/替换资源 |
| PATCH | 部分更新资源 |
| DELETE | 删除资源 |
| HEAD | 只要响应头,不要 body |
| OPTIONS | 查询支持的方法,CORS 预检常用 |
| TRACE | 回显请求,调试用,常被禁用 |
| CONNECT | 建立隧道,HTTPS 代理常用 |
补充概念:
- 安全方法:GET、HEAD、OPTIONS 不应修改数据。
- 幂等:GET、PUT、DELETE 多次执行结果一致。
- 非幂等:POST 通常非幂等。
3、URL 与参数位置
URL 常见结构:
https://example.com:443/path?id=1&name=test#top拆开:
https:协议example.com:主机443:端口/path:路径id=1&name=test:查询参数#top:片段,通常不发给服务器
参数可能出现在:
- URL 查询串
- 请求 body
- Cookie
- 请求头
- 路径中,如
/user/123 - JSON/XML 字段中
4、常见 Body 格式
| Content-Type | 格式 | 示例 |
|---|---|---|
application/x-www-form-urlencoded | 普通表单 | username=admin&password=123 |
multipart/form-data | 文件上传/多部分表单 | 带 boundary 分隔 |
application/json | JSON | {"name":"test"} |
application/xml | XML | <user><name>test</name></user> |
text/plain | 纯文本 | 直接文本 |
application/octet-stream | 二进制 | 文件流 |
四、Cookie、Session 与认证授权
1、Cookie 与 Session
a. Set-Cookie 常见属性
| 属性 | 作用 |
|---|---|
Domain | 哪些域名可带这个 Cookie |
Path | 哪些路径可带 |
Expires / Max-Age | 过期时间 |
Secure | 只在 HTTPS 发送 |
HttpOnly | JS 不能读取,防 XSS 偷 Cookie |
SameSite | 控制跨站发送,防 CSRF |
b. 常见会话方式
- Cookie + Session ID
- Token
- JWT
- OAuth / OIDC
- API Key
2、认证与授权
a. 常见认证方式
| 头部/方式 | 含义 |
|---|---|
Authorization: Basic ... | 用户名密码 Base64 |
Authorization: Bearer ... | Bearer Token,常见 JWT |
Cookie: sessionid=... | 会话认证 |
X-API-Key | API 密钥 |
| OAuth | 授权框架,常配 Bearer |
b. 状态码区分
- 401 Unauthorized:没认证
- 403 Forbidden:认证了但没权限
五、缓存、压缩、传输与协议升级
1、缓存与验证
| 头部/状态码 | 作用 |
|---|---|
Cache-Control | 缓存策略 |
Expires | 过期时间 |
ETag | 资源版本标识 |
Last-Modified | 最后修改时间 |
If-None-Match | 带 ETag 去问是否变化 |
If-Modified-Since | 带时间问是否变化 |
304 Not Modified | 没变,用本地缓存 |
2、压缩与传输
| 头部 | 作用 |
|---|---|
Accept-Encoding | 客户端能解压什么 |
Content-Encoding | body 压缩方式,如 gzip、br |
Transfer-Encoding: chunked | 分块传输 |
Content-Length | body 字节长度 |
Connection | 连接保持或关闭 |
注意:Content-Length 和 Transfer-Encoding 同时出现时,可能涉及请求走私。
3、连接与协议升级
- HTTP/1.0:默认短连接
- HTTP/1.1:默认 keep-alive
- HTTP/2:多路复用,有伪头
:method、:path - HTTP/3:基于 QUIC,Burp 抓包可能需特殊配置
- WebSocket:
Upgrade: websocket - SSE:服务器推送事件
六、同源策略与 CORS
同源:协议 + 域名 + 端口都相同。
CORS 相关头:
OriginAccess-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersAccess-Control-Allow-Credentials
预检请求常用:
OPTIONS /api HTTP/1.1Origin: https://evil.comAccess-Control-Request-Method: POST七、编码与字符集
常见编码:
- URL 编码:
%20、%2F - Base64
- HTML 实体:
<、> - Unicode
- UTF-8 / GBK
- JWT:三段 Base64URL,
header.payload.signature
八、Burp Suite 工具与工作流
1、Burp Suite 常用模块
| 模块 | 作用 |
|---|---|
| Proxy | 拦截、查看、修改请求响应 |
| HTTP history | 历史流量 |
| Repeater | 手动改包重放 |
| Intruder | 爆破、模糊测试 |
| Scanner | 自动扫描漏洞 |
| Decoder | 编码解码 |
| Comparer | 对比两个包 |
| Logger | 记录流量 |
| Organizer | 整理请求 |
| Collaborator | 带外检测 |
| DOM Invader | 前端 DOM XSS 辅助 |
| Extender | 装插件 |
2、Burp 抓包工作流
- 浏览器/客户端设置代理到 Burp。
- 安装 Burp CA 证书。
- 开启 Intercept 拦截。
- 看请求行、头、Cookie、body。
- Forward 放行,或 Drop 丢弃。
- 右键发送到 Repeater / Intruder。
- 修改参数、头部、方法,观察响应。
- 对比状态码、长度、内容、Set-Cookie、Location。
3、抓不到包的常见原因
- 代理没设置
- CA 证书没装
- 客户端证书固定
- 非 HTTP 协议
- WebSocket / QUIC / HTTP3
- 本地回环地址
- 防火墙或 VPN
- 移动端代理配置问题
九、常见安全测试点
在授权环境中,常关注:
- SQL 注入
- XSS
- CSRF
- SSRF
- 文件上传
- 路径穿越
- 越权访问
- 开放重定向
- 请求走私
- 缓存投毒
- CORS 配置错误
- JWT 缺陷
- 暴力破解
- 限流绕过
- 信息泄露
十、分析数据包的顺序
看一个包时,可以按这个顺序:
- 请求方法、URL、参数
- Host、Cookie、Authorization
- Content-Type、Content-Length
- body 内容
- 响应状态码
- Location、Set-Cookie
- 响应长度、响应体
- 和正常包对比差异
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时