网络安全HTTP协议的学习总结
HTTP(Hypertext Transfer Protocol)就是超文本传输协议,它是现代互联网最 重要也是最基本的协议。客户端(如浏览器)向服务器发送HTTP请求,服务器处理请求后返回响应。请求和响应均包含协议头(Headers)和可选的消息体(Body)。HTTP默认使用80端口,HTTPS(HTTP Secure)则使用443端口并通过TLS/SSL加密。
HTTP:
HTTP(Hypertext Transfer Protocol)就是超文本传输协议,它是现代互联网最 重要也是最基本的协议。
工作原理:
客户端(如浏览器)向服务器发送HTTP请求,服务器处理请求后返回响应。请求和响应均包含协议头(Headers)和可选的消息体(Body)。HTTP默认使用80端口,HTTPS(HTTP Secure)则使用443端口并通过TLS/SSL加密。
HTTP协议具体实现:

请求格式
客户端发送的请求由以下部分组成:
- 请求行:包含方法(GET/POST等)、URI、协议版本
GET /index.html HTTP/1.1 - 头部字段:键值对形式,如
Host: example.com、User-Agent: Mozilla/5.0 - 空行:分隔头部与主体
- 请求体(可选):如POST提交的表单数据
响应格式
服务器返回的响应包含:
- 状态行:协议版本、状态码(如
200 OK)HTTP/1.1 200 OK - 头部字段:如
Content-Type: text/html、Content-Length: 1024 - 空行
- 响应体:如HTML文档或JSON数据
状态码处理
200 OK:成功响应301 Moved Permanently:重定向404 Not Found:资源不存在500 Internal Server Error:服务器内部错误
头部字段关键功能
Content-Type:定义数据格式(如text/html、application/json)Cache-Control:控制缓存行为(如no-cache)Connection:管理TCP连接(如keep-alive)
HTTP请求报头:
下面是我用burp suite抓的一个包:

该HTTP请求是一个典型的GET请求,目标是访问ctf.bugku.com的/login.html页面。请求头中包含多个标准字段和自定义字段,主要用于浏览器标识、安全策略和会话管理。
关键请求头解析
Host: ctf.bugku.com
指定目标服务器域名,是HTTP/1.1的必需字段。
Connection: close
指示服务器在响应后关闭TCP连接,而非保持长连接。
User-Agent: Mozilla/5.0 (...)
标识客户端浏览器和操作系统信息,此处为Windows上的Edge浏览器(基于Chromium)。
Cookie: Hm_lvt_97426e6b...
包含会话标识或跟踪信息,通常用于用户身份验证或行为分析。
安全相关头部
sec-ch-ua: 提供浏览器品牌和版本信息,用于反欺诈检测。
*Sec-Fetch-系列字段: 控制跨域请求的安全策略,如cross-site表示跨站请求。
Upgrade-Insecure-Requests: 1
提示服务器优先返回HTTPS资源,用于混合内容页面的安全升级。
一些常用的工具:
Namp
Nmap是一款网络扫描和主机检测非常有用的工具,它不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。可适用于Winodws, Linux, Mac等操作系统。
主要功能有:
- 主机探测:探测网络上的主机。
- 端口扫描:探测目标主机所开放的端口。
- 版本检测:探测目标主机的网络服务,判断其服务名称及版本号。
- 系统检测:探测目标主机的操作系统及网络设备的硬件特性。
- 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言。
常用参数:
- -iL filename 从文件中读取待检测的目标
- --exculdefile exclude_file 排除文件中的ip,格式和-iL指定扫描文件的格式相同
- -sL 仅仅是显示,扫描的IP数目,不会进行任何扫描
- -sn ping扫描,即主机发现
- -Pn 不检测主机存活
- -PS/PA/PU/PY[portlist] TCP SYN Ping/TCP ACK Ping/UDP Ping发现
- -PE/PP/PM 使用ICMP echo, timestamp and netmask 请求包发现主机
- -PO[prococol list] 使用IP协议包探测对方主机是否开启
- -n/-R 不对IP进行域名反向解析/为所有的IP都进行域名的反响解析
- -sS/-sT/-sA/-sW/-sM TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描
- -sU UDP扫描
SQLmap
SQLMAP是Python编写的一款用来检测与利用SQL注入漏洞的免费开源工具,支持 检测 MySQL、Oracle、SQL Server、PostgreSQL、Access等几乎所有数据库的注入攻击。
常用语句:
- 判断是否为注入 sqlmap.py -u http://www.360.cn/sql.php?id=1 查询当前注入点的数据库
- sqlmap.py -u "http://www.360.cn/sql.php?id=1" --dbs 获取指定数据库的所有表
- sqlmap.py -u "http://www.360.cn/sql.php?id=1" --tables -D USER 获取指定数据库指定表的字段信息
- sqlmap.py -u "http://www.360.cn/sql.php?id=1" --columns -T admin -D USER 获取指定数据库指定表的数据
- sqlmap.py -u "http://www.360.cn/sql.php?id=1" --dump -T admin -D USER


Burp Suite
- Proxy(代理) 拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允 许你拦截,查看,修改在两个方向上的原始数据流。
- Intruder(入侵) 一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标 识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
- Repeater(中继器) 一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
- Extender(扩展) 可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
- Options(设置) Burp Suite的一些设置

使用前要设置地址和端口

wirshark抓包工具:
Wireshark 可以实时抓取电脑网卡上的所有网络数据包,对数千种网络协议进行深度解析,清晰展示数据的传输过程与内容,用于网络故障排查、协议学习、安全审计、程序调试等场景,是网络分析与安全领域最核心的实用工具。
选择wife开始抓包后会自动捕获网络数据包如图下所展示


osi七层网络模型:
| 层数 | 层级名称 | 核心作用 | 典型协议 / 标准 |
|---|---|---|---|
| 7 | 应用层 | 为应用提供网络服务 | HTTP、HTTPS、FTP、SMTP、POP3、DNS、Telnet、SSH |
| 6 | 表示层 | 数据格式、加密、压缩 | SSL/TLS、JPEG、ASCII、MPEG |
| 5 | 会话层 | 建立、管理、断开会话 | RPC、SQL、NFS、RTSP |
| 4 | 传输层 | 端到端传输、端口、可靠传输 | TCP、UDP |
| 3 | 网络层 | 寻址、路由、选路 | IPv4/IPv6、ICMP、ARP、OSPF、BGP、RIP |
| 2 | 数据链路层 | 帧封装、MAC 地址、差错检测 | Ethernet、PPP、HDLC、WiFi(802.11)、VLAN |
| 1 | 物理层 | 比特流、电气 / 物理规范 | 双绞线、光纤、RJ45、电压、0/1 比特流 |
左右两侧分别为16进制数据和ascll码
过滤器:
| 对比项 | 捕获过滤器 (Capture Filter) | 显示过滤器 (Display Filter) |
|---|---|---|
| 作用时机 | 抓包前设置 | 抓包后过滤 |
| 功能 | 只抓符合条件的包,丢弃其他 | 不丢包,只隐藏不符合的 |
| 语法 | libpcap 语法(简单) | Wireshark 原生语法(强大) |
| 性能 | 占用资源小,适合长时间抓包 | 占用资源大,适合事后分析 |
| 输入位置 | 启动抓包前的输入框 | 抓包界面顶部输入框 |
显示过滤器:
基本运算符语法:
| 符号 | 含义 | 示例 |
|---|---|---|
== |
等于 | ip.addr == 192.168.1.1 |
!= |
不等于 | ip.src != 192.168.1.1 |
> |
大于 | tcp.port > 1024 |
< |
小于 | frame.len < 100 |
>= |
大于等于 | tcp.window_size >= 1024 |
<= |
小于等于 | frame.len <= 1500 |

地址过滤语法:
| 过滤器 | 作用 |
|---|---|
ip |
只显示 IPv4 包 |
ipv6 |
只显示 IPv6 包 |
ip.addr == 192.168.1.100 |
源或目标 IP 是 192.168.1.100 |
ip.src == 192.168.1.100 |
源 IP |
ip.dst == 192.168.1.100 |
目标 IP |
捕获过滤器:
| 过滤器语法 | 作用 |
|---|---|
host 192.168.1.100 |
抓取与该 IP 相关的所有包 |
src host 192.168.1.100 |
只抓源 IP 是该地址 |
dst host 192.168.1.100 |
只抓目的 IP 是该地址 |
net 192.168.1.0/24 |
抓取整个网段 |
src net 192.168.1.0/24 |
源网段 |
dst net 192.168.1.0/24 |
目的网段 |
只会捕获相应的数据包
tcp协议的三次握手和四次挥手:
TCP 三次握手(建立连接)
| 次数 | 方向 | 报文标志 | 状态变化 | 说明 |
|---|---|---|---|---|
| 1 | 客户端 → 服务端 | SYN=1 | 客户端:CLOSED → SYN_SENT | 客户端发起连接请求 |
| 2 | 服务端 → 客户端 | SYN=1, ACK=1 | 服务端:LISTEN → SYN_RCVD | 服务端同意连接,并回应 |
| 3 | 客户端 → 服务端 | ACK=1 | 客户端:SYN_SENT → ESTABLISHED服务端:SYN_RCVD → ESTABLISHED | 客户端确认,连接建立 |
TCP 四次挥手(关闭连接)
| 次数 | 方向 | 报文标志 | 状态变化 | 说明 |
|---|---|---|---|---|
| 1 | 主动方 → 被动方 | FIN=1 | 主动方:ESTABLISHED → FIN_WAIT1 | 主动方:我发完数据了,请求关闭 |
| 2 | 被动方 → 主动方 | ACK=1 | 被动方:ESTABLISHED → CLOSE_WAIT主动方:FIN_WAIT1 → FIN_WAIT2 | 被动方确认收到关闭请求 |
| 3 | 被动方 → 主动方 | FIN=1 | 被动方:CLOSE_WAIT → LAST_ACK | 被动方数据也发完,同意关闭 |
| 4 | 主动方 → 被动方 | ACK=1 | 主动方:FIN_WAIT2 → TIME_WAIT被动方:LAST_ACK → CLOSED | 主动方最后确认,双方关闭 |

抓包所示:

更多推荐

所有评论(0)