认识http协议

0x01 HTTP协议

超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开一个)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。

0x02 Http 协议支持的方法

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:

 

OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。

 

HEAD-向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

GET - 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

 

POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

 

PUT - 向指定资源位置上传其最新内容。

 

DELETE - 请求服务器删除Request-URI所标识的资源。

 

TRACE- 回显服务器收到的请求,主要用于测试或诊断。

 

CONNECT- HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

PATCH - 用来将局部修改应用于某一资源,添加于规范RFC5789。

 

方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。

HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

其中红色get ,post方法是最常用的方法。由于篇幅限制建议读者参考http://baike.baidu.com/view/1628025.htm?fromId=9472


0x03 firefox 插件观察http协议

Firebug 主要是调试网页用的插件。

安装完firebug后,在单机套件里用firefox浏览器打开:http://ok3w.yuncheng.com/

然后右键,弹出菜单

选择“用firebug查看元素”

出现firebug的调试窗口,点击网络菜单

点击“清除”,清空网络请求信息。随便点击一个连接如下

进入如下界面

如图这个在网络窗口下找到这个show.asp?id=26 页面的第一个请求,这个请求用的是HTTP的GET方法,前边有个GET。点击加号展开

(1)、头信息是这个http协议的请求头和响应头

              请求头信息:浏览器发给服务器的请求(如上图)。

                            Accept:是浏览器可以接收的文本格式。

                            Accept-Encoding :是浏览器可以接收的编码格式,这里是gzip和deflate两种格式

                            Accept-Language:浏览器可以接收的语言

                            Connection:浏览器希望请求的http连接的活动状况,这里是保持连接。

                            Cookie:是浏览器发送给服务器的cookie

                            Host:是当前网页的域名

                            Referer:当前请求是从哪个网页发出的

                            User-Agent:浏览器类型

              响应头信息:是web服务器返回给浏览器的响应头

                     Server:是web服务器的类型,这里是iis6.0

                     X-Powered-by:是那种语言,这里asp.net

(2)、参数是这个请求发送给web服务器的参数

       点击参数菜单。

如上图,当前get请求的地址是/show.asp?id=26,所以参数id 的 值是26

0x04 firefox 插件修改http协议发送的数据

(1)、修改GET方法的数据

Get方法数据修改很简单,直接修改url(也就是地址)里的参数即可http://ok3w.yuncheng.com/show.asp?id=26

假设有如上url,则参数id是26,如果访问id是25的网页直接在地址栏里输入http://ok3w.yuncheng.com/show.asp?id=25即可。

(2)、修改post方法的数据

Post方法发送的数据不是在地址栏里的,因此不能通过修改url来实现。这里我们用tamper data,在firefox工具菜单里选择tamper data,然后在tamperdata 的窗口里点击start tamper

这时再回到网页里,随便输入个用户名和密码来进行登陆。这里我输入的用户名:user

密码:pass 然后点击登陆

点击登陆,tamper data 就拦截到当前http请求,然后弹出窗口,选择tamper

进入如下界面,左边是这个http请求的头,右边是发送的参数。

http头这里不再解释,和get的一样。看右边的post的参数:共4个参数user和pass是我们输入的,其他两个是开发者设计需要这里我们不关注。修改user和pass都为admin,点击确定提交请求(http头里的数据都可以修改这里,其中cookie可以盗用别人的cookie)。

弹出用户名或是密码错误,请重新登陆,原因是本来就不存在admin这个普通用户。

猜你喜欢

转载自www.cnblogs.com/-qing-/p/10631837.html