引言
在Web方向中,有这么一道题,考察对http协议的理解,通常是将该链接抓包,将报文修改后重新发送获得flag,这就不得不提到抓包工具Burpsuite,插件Hackbar V2,cookie-editor的使用以及http相应知识点。
http介绍
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。简单来说就是客户端和服务端进行数据传输的一种规则。这里我们只需要了解报文格式,状态信息,请求头即可。
报文(请求和响应)
请求报文包括以下部分:
-
请求行:包括请求方法、URL 和 HTTP 版本。
-
请求头:包括客户端和服务器之间的交互信息,例如浏览器类型、语言、Cookie 等。
-
请求体:POST 请求时传递的数据,例如表单数据。
响应报文包括以下部分:
-
状态行:包括协议版本、状态码和状态信息。
-
响应头:包括服务器和客户端之间的交互信息,例如响应的时间、响应长度等。
-
响应体:服务器返回的数据,例如 HTML 页面或 JSON 数据。
示例:
状态信息
HTTP 状态码是一个三位数字,表示服务器对请求的处理结果。常见的状态码包括:
- 1xx:消息,表示服务器已收到请求,需要客户端继续操作。
- 2xx:成功,表示服务器成功地处理了请求。
- 3xx:重定向,表示需要客户端进一步的操作才能完成请求。
- 4xx:客户端错误,表示客户端发送的请求有误。
- 5xx:服务器错误,表示服务器在处理请求时发生了错误。
HTTP 状态消息是状态码的文本描述,通常与状态码一起返回给客户端。例如,200 状态码的状态消息是 "OK",404 状态码的状态消息是 "Not Found",500 状态码的状态消息是 "Internal Server Error" 等。
示例:
请求头
HTTP 请求头是指在客户端向服务器发送 HTTP 请求时,携带的附加信息。它包含了一些键值对,用于告诉服务器一些关于请求的额外信息。
HTTP 请求头由多行文本组成,每行文本包含一个键值对,中间用冒号和空格分隔,最后以一个空行为结束。常见的请求头包括:
- User-Agent:浏览器或其他客户端的标识信息。
- Accept:客户端支持的数据类型。
- Content-Type:请求体的 MIME 类型。
- Authorization:身份验证信息,用于访问需要授权的资源。
- Referer:请求来源 URL。
- Cookie:包含存储在客户端的 cookie 数据。
例如,下面是一个 HTTP 请求头的示例:
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: http://example.com/
Connection: keep-alive
这个请求头包括了请求方法、请求路径、HTTP 版本号,和一些其他的请求头信息。服务器可以利用这些请求头信息进行不同的处理。
Burpsuite抓包
在使用Burpsuite(简称bp)需要配置代理,如果是Kali的话直接使用即可,打开爆bp,界面如下:
点击Proxy模块,然后点击Intercept is off 变为Intercept is on,再点击open browser
在新打开的页面中输入baidu.com
响应如下:此时完成了一次包的劫持
bp点击Forward将包放出的话,PortSwigger会回显baidu.com页面内容
在点击PortSwigger的url则又进行了一次抓包
这就是简单的抓包操作,接下来是修改包操作:
右键点击 Repeater,然后再点击Prox旁边的Repeater模块
现在是截取的包,可以对包的内容修改,再转发,如对ip的修改,添加一行数据,Client-ip:127.0.0.1,再点击send,即完成一次包修改操作
- Render:指将二进制格式的数据转化为文本或图像等可读格式。通常用于将资源文件例如图片、音频或视频等数据展示在用户界面上,供用户阅读或播放。例如,在网络浏览器中,通过解析 HTML 文件中的 Render 数据可以渲染出网页的图像、文字和链接等内容。
- Raw:指原始二进制数据,未经过任何编码转换或格式化的原始数据。通常用于在开发调试或数据传输过程中查看和比对数据,例如在网络协议分析或数据包抓取过程中,使用 RAW 数据能够更准确地分析网络传输过程中的数据变化。
- Pretty:指格式化或美化后的数据,通常是为了让数据更具可读性和易读性,方便用户阅读和理解。在编程语言中,以 JSON 或 XML 格式存储的数据通常会使用 Pretty 格式输出,使得数据结构更加直观、易读、易懂。
常见包的修改
本地访问:
- X-Forwarded-For:127.0.0.1
- X-Forwarded:127.0.0.1
- Forwarded-For:127.0.0.1
- Forwarded:127.0.0.1
- X-Forwarded-Host:127.0.0.1
- X-remote-IP:127.0.0.1
- X-remote-addr:127.0.0.1
- True-Client-IP:127.0.0.1
- X-Client-IP:127.0.0.1
- Client-IP:127.0.0.1
- X-Real-IP:127.0.0.1
- Ali-CDN-Real-IP:127.0.0.1
- Cdn-Src-Ip:127.0.0.1
- Cdn-Real-Ip:127.0.0.1
- CF-Connecting-IP:127.0.0.1
- X-Cluster-Client-IP:127.0.0.1
- WL-Proxy-Client-IP:127.0.0.1
- Proxy-Client-IP:127.0.0.1
- Fastly-Client-Ip:127.0.0.1
- True-Client-Ip:127.0.0.1
- Host: 127.0.0.1
来源修改:
Referer:修改值
浏览器修改:
User-agent:修改值
Cookie修改:
Set-cookie:修改值
代理修改:
Via:修改值
邮箱修改:
From:修改值
HackBar V2 以及Cookie-Editor
建议使用火狐浏览器,在火狐浏览器的扩展中搜索Hackbar以及Cookie,找到对应名下载即可,使用时按F12或右键点击检查,即可加载。
HackBar可以加载url,然后进行GET传参,或者POST传递参数。
Cookie-editor可以修改访问网站的cookie值,有些要求修改cookie获取flag,有些flag藏在cookie中。
一般这类题是签到题,使用bp抓包修改即可相应的响应头获取flag,或者使用HackBar传递参数又或者修改或查看cookie值来获取flag。求点赞^0^