渗透基础之浅谈HTTP请求(小白文)

2019-07-26 15:47:49 浏览数 (1)

渗透最基础的开始就是信息收集,俗话说得好:“知己知彼,百战不殆”

但是光有了工具还仅仅是不够的,正所谓:工欲善其事,必先利其器”熟练掌握工具,还要看懂里面传达的信息,那么下面就为带大家讲解一些相关知识:

1、首先我们应该明白这个网站的运行流程

网站运行的流程:客户端(请求)——服务端处理请求数据———客户端(接受返回信息)

灵魂画手画的流程图

2、状态码

状态码:客户端发送请求到服务端返回的状态码,HTTP协议中状态码以三位数字组成,以第一位数字定义响应类别

常见的状态码如下(重点)

200

客户端请求成功,是最常见的状态

302

重定向。用于告诉客户端所访问的资源已被转移

404

请求资源不存在‍

400

客户端请求有语法错误,不能被服务器所理解

401

请求未授权‍‍

403

服务器收到请求,但是拒绝服务

500

服务器内部错误

503

服务器当前不能处理请求,过一段时间请求可能会恢复

在这里列举我理解的HTTP请求

'''如何发起一个请求,在普通用户的角度看来很简单。打开游览器输入www.badu.com就可以了 但在渗透的角度来讲凡事都要学个细致,流程如下: 打开浏览器-->输入网址-->网站返回封装的数据-->到本地又解析成HTML呈现在用户们面前 当然这个是小白文,按照理解的来 '''

如下是大佬们理解的HTTP请求的过程

域名解析 ---> 与服务器建立连接 ---> 发起HTTP请求 ---> 服务器响应HTTP请求,浏览器得到html代码 ---> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片) ---> 浏览器对页面进行渲染呈现给用户

百度HTTP请求

复现流程

打开burp,工具我有在工具库[CTF武器库]里分享,打开之后是这样的,避免英语不好的小白看不到,这里配合汉化后的一张帮助理解

配置BURP SUITE

点击第3步,可以设置监听端口,注意IP地址前面的小勾了吗划重点了

前面那个小勾是判断你电脑的端口是否被占用,如果你的没有这个的话点击第3步设置其他可用端口如下

因为这里咱没有任何问题就不需要设置了

打开游览器我用的Opera,打开设置

设置完成

输入www.baidu.com,burp返回拦截的数据包

代码语言:javascript复制
例1
GET /his?wd=&from=pc_web&rf=3&hisdata=&json=1&p=3&sid=&req=2&csor=0&cb=jQuery110208513608111662925_1557032998388&_=1557032998389 HTTP/1.1//GET请求
Host: www.baidu.com
Connection: close
Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.70
Referer: https://www.baidu.com/index.php?tn=54002054_1_dg
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: BAIDUID=D3DD32767A8D69DB338CF09F080AAB70:FG=1; BIDUPSID=D3DD32767A8D79DB338CF09F080AAB70; PSTM=1557032992; BDRCVFR[GDKhK5Jne_n]=aeXf-1x8UdYcs; delPer=0; BD_HOME=0; H_PS_PSSID=; BD_UPN=15324753
状态码为200,访问成功
代码语言:javascript复制
例2
HTTP/1.1 200 OK  状态行 
Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部 
Server: Apache/2.2.8 (Win32) PHP/5.2.5 
X-Powered-By: PHP/5.2.5 
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 4393 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=utf-8 

常见的HTTP请求方法

GET

POST

HEAD

PUT

DELETE

TRACE

CONNECT

OPTIONS

拿例1为例子请求为GET请求,所提交的以明文显示

GET

向资源发送请求,明文提交,服务器只接受程序员设计好的格式,否则就会报错

HEAD

与GET一致,只返回响应头信息

POST

向资源提交数据并请求处理(如文件上传/表单提交)

PUT

向资源上传新内容

DELETE

删除URL指定资源(危险)‍

代码语言:javascript复制
请求方法:
GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
OPTIONS: 允许客户端查看服务器的性能。
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
MOVE: 请求服务器将指定的页面移至另一个网络地址。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
LINK: 请求服务器建立链接关系。
UNLINK: 断开链接关系。
WRAPPED: 允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。

学习笔记如下:

3服务器以及操作系统

服务器:操作系统 win2003(IIS6.0)、2008(IIS7.0、IIS7.5)、win2012(IIS8.0)、win2016(IIS8.5)可视化操作系统,win10(IIS10.0)

Linux系统—centos、ubuntu命令行操作系统

集成环境:phpstudy,upyun,appsever

容器/环境—动态脚本—数据库

容器:apache iis tomcat

动态脚本:asp asp.net(aspx) php java jsp

数据库:access (asp脚本) sql sever (mssql)( asp.net脚本) mysql (php脚本) Oracle(java脚本)

IIS容器支持的脚本:ASP,CER,CER,ASA,CDX,ASP.NET,ASHX

Apache支持脚本:PHP

Tomcat支持脚本:JAVA

环境标配:apache php mysql

asp sql sever iis

asp access iis

tomcat Oracle java

0 人点赞