http协议基础

一、工具介绍

JDK是java的软件开发工具包,方便我们本地运行java开发工具

G:\LAVA\JDK1.8.8_191

验证java -version

Set查看环境变量,path所有变量

Burpsuite

爬虫,扫描(dashboard)、拦包(proxy)、重放repeater、爆破inturder、加码编码decoder、比较comparer

双击打开burpsuite_pro_v2.1_BurpHelper.jar可以使用

或者在终端java -jar burpsuite_pro_v2.1_BurpHelper.jar也可以打开

二、http协议特点

简单快速,请求方式有get post head等八种

无连接无状态

支持模式有B/S(基于浏览器) C/S(编程实现通信)(websocket)

URL,统一资源定位符,在网络中用来标识某处的资源

http(协议)://www.baidu.com(域名):8080(端口)/news(虚拟目录)/index.php(文件名部分)?Parameter=deal&id=35&do=add(三个参数)#name(锚部分)

请求包:request=请求行+请求头+空行+请求数据

puppeteer 拦截响应 burp拦截响应包_css

 

 

请求数据放在尾部是post,放在url里是get

请求方式http1.1  :get post head options put delete trace connect

拦截访问百度:

puppeteer 拦截响应 burp拦截响应包_服务器_02

 

 

GET(请求类型) /success.txt HTTP/1.1(协议版本)-------请求行

Host: detectportal.firefox.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0

Accept: */*

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Cache-Control: no-cache

Pragma: no-cache

DNT: 1

Connection: close(上述蓝色字体都是请求头,请求形式都是key=value)

空行

请求数据(此处为空,因为当前的请求包的请求方式是get)

puppeteer 拦截响应 burp拦截响应包_html_03

 

 

拦截post类型

POST /wordpress/wp-login.php HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost/wordpress/wp-login

Cookie: wp-settings-time-1=1569116293; wordpress_test_cookie=WP+Cookie+check

DNT: 1

Connection: close

Upgrade-Insecure-Requests: 1

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

Content-Length: 128

 

log=admin&pwd=admin123456&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=http%3A%2F%2Flocalhost%2Fwordpress%2Fwp-admin%2F&testcookie=1

puppeteer 拦截响应 burp拦截响应包_css_04

 

 

Get和post请求的比较

相同点

1、get和post都可出啊u你创建数组,array,其包含了键值对(key=value),其中的键就是表单控件的名称,值是用户输入的数据。

2、get和post可视为$_get和$_post,是超全局变量

不同点:

1、get型方式将用户发送的数据坪街道url中,发送的数据量较小,不安全

2、post型方式参数放在请求包中的请求数据中,必须使用工具查看,发送的数据量较大,安全性较高。

请求包中的每个请求头的参数意义

Host表示请求的服务器ip

User-agent 表示用户本地环境

Accept 浏览器可以接收解析的应用环境

Accept-language 浏览器可解析的语言类型

Accept-Encoding 浏览器可解析的编码方式

Referer 表示请求页面是从哪里来的

 

puppeteer 拦截响应 burp拦截响应包_html_05

 

 

(Action=“”表示提供给自己)

Cookie 表示服务器和浏览器之间的会话状态,该会话状态可以表示用户是否登录过,一般都是服务器给配置,具有时效性。只要失效,就需要用户重新登陆,只有登录成功后,浏览器就会保存cookie,每次去服务器请求都会带上cookie,并在该cookie是需要在服务器中验证

x-forwarded-for:127.0.0.1 表示用户的真实ip

 

http的响应包:

用户发送的请求包到达服务器后,服务器要处理该请求,处理之后的结果发送给用户的浏览器,我们将该结果称为响应包Response

Response=状态行+消息报头+空行+响应正文

 

使用bp拦截响应包:

puppeteer 拦截响应 burp拦截响应包_puppeteer 拦截响应_06

先设置浏览器代理,再去设置bp中的代理监听器,同时注意勾选intercept client requests。

 

在拦截到数据包之后点击forward,就能看到响应包

 

puppeteer 拦截响应 burp拦截响应包_css_07

 

 

 状态码

状态码游三位数字组成,第一位数字表示了响应的类型,共有五种:

1xx表示服务器已经接收到请求,并且需要继续处理

2xx表示服务器已经成功接收并处理了该请求

3xx表示重定向,url要跳转到其他界面去请求

4xx表示用户请求有问题,

5xx表示服务器内部出错

常见状态码:200 ( 成功处理了请求,一般情况下都是返回此状态码)

302((临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。)

304((未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容)

400 ( 服务器不理解请求的语法)

403( 服务器拒绝请求)

404 ( 服务器找不到请求的网页)

500((服务器内部错误)  服务器遇到错误,无法完成请求。 )

 

响应头中每个参数的意义:

location表示跳转页面

puppeteer 拦截响应 burp拦截响应包_puppeteer 拦截响应_08

 

 

x-power-by用于告知网站是用何种语言或框架编写

例如:
PHP标准输出是:X-Powered-By: PHP/5.2.1

 

 

HTML元素分类:

  块级元素和内联元素

块级元素:标签元素会以新行开始或结束。<h1><p><table>当前元素标签要独占一行

内联元素:显示数据不会以新行开始。<a><img><td>会堆积在一起

<div>块级元素,用于组合其他元素,方便统一设置属性或者样式

 

布局:设计网页时考虑到页面美观,会设置页面的局部或者整体的布局

<table><div>

 

html事件

需要触发某些动作的发生,需要事件的支持

 

Css(层叠式样式表)决定页面怎么显示元素

引入方式:

1、引入文件。例如style.css在当前元素中直接写。例如:style:””

 

2、外链式,<link>引入外部css文件;导入外部样式;

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" type="text/css" href="first.css">
</head>
<body>
<div id="hacker">this is first title</div>
<p class="china">this is second title</p>
</body>
</html>

 

Css文件内容如下

puppeteer 拦截响应 burp拦截响应包_html_09

 

 

、内嵌方式,在<head>中写样式,使用@import在<head></head>之间应用

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css"   >
        @import url(second.css);
    </style>
</head>
<body>
<div id="p">this is first title</div>
</body>
</html>

 

Css如下

 

 

 

 

 

puppeteer 拦截响应 burp拦截响应包_服务器_10

 

 

优先级:行内模式>内嵌模式>外链式(后两种需要xx.css文件)

Css语法:

选择器{属性一:value1;属性2:value2;}

选择器

第一种情况:标签名 影响其他同类型标签

第二种情况:id

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">行内模式
    #hacker{
        color:green;
        text-align: center;
    }
        #china{
            color: red;
            text-align: center;
        }
    </style>

</head>
<body>
<div id="hacker">i am hacker</div>
<div id="china">i am chinese</div>
</body>
</html>

第三种情况:class,可以在不同元素中使用

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
    .test{
        color: red;
        text-align: center;
    }
    </style>


</head>
<body>
<h1 class="test">this is first title</h1>
<p class="test">this is second title</p>
</body>
</html>

 

常用样式:

后背景:background-color/background-image

字体:color size text-align/text-indet

盒子模式:

 

 

 

puppeteer 拦截响应 burp拦截响应包_puppeteer 拦截响应_11

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" >
        #p{
            background-color: gray;
            width: 300px;
            border: 25px solid pink;
            padding: 10px;
            margin: 10px;
        }
    </style>
</head>
<body>
<div id="p">this is first title</div>
</body>
</html>

puppeteer 拦截响应 burp拦截响应包_服务器_12