Day 2
数据包,实操……
数据包
Request请求数据包数据格式
1.请求行:
请求类型/请求资源路径 ,协议的版本和类型
2.请求头:
一些键值对,浏览器于web服务器之间都可以发送,特定的某种含义
3.空行:
请求头和请求体之间用一个空行隔开
4.请求体:
要发送的数据(一般post提交会使用)
#请求行
1.请求行由三个标记组成:
请求方法、请求URL和HTTP版本,它们用空格分隔
例如:
GET /index.html HTTP/1.1
2.HTTP 规划定义了8种可能的请求方法:
GET:检索URL中标识资源的一个简单请求
HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST:服务器接受被写入客户端输出流中的数据的请求
PUT:服务器保存请求数据作为指定URL新内容的请求
DELETE:服务器删除URL中命令的资源的请求
OPTIONS:关于服务器支持的请求方法信息的请求
TRACE: web服务器反馈Http请求和其头标的请求
CONNECT : 已文档化,但当前未实现的一个方法,预留做隧道处理
#请求头
由关键字/值对组成,每行一对,关键字和值用冒号分享。请求头标通知服务器腾于客户端的功能和标识。
HOST:主机或域名地址
Accept:指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。
User-Agent:是客户浏览器名称
Host:对应网址URL中的web名称和端口号。
Accept-Langeuage: 指出浏览器可以接受的语言种类,如en或en-us,指英语.
connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接14的,HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比个HTML文件和相关的图形文件),不需要每次都建立连接
Cookie: 浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。
Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪web请求是从什么网站来的。
Content-Type:用来表名request的内容类型。可以用HttpServletReques的getContentType() 方法取得。
Accept-charset: 指出浏览器可以接受的字符编码。英文浏览器的默认值是IOS-8859-1。
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到web响应之后先解码,然后再检查文件格式。
#空行
最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。
#请求数据
使用post传送,最常使用的是Content-Type和Content-Length 头标。
Response返回数据包数据格式
#Response返回数据包数据格式
个响应由四个部分组成;状态行、响应头标、空行、响应数据。
1.状态行:协议版本、数字形式的状态代码和状态描述,个元素之间以空格分隔
2.响应头标:包含服务器类型、日期、长度、内容类型等
3.空行:响应头与响应体之间用空行隔开
4.响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面
HTTP响应码:
1xx:信息,请求收到,继续处理10
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误
5xx:服务器错误
常见的 HTTP 状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
具体的可以查看:
[HTTP响应码](HTTP 状态码 | 菜鸟教程 (runoob.com))
很多工具的原理采用的都是探测HTTP的状态码。
Proxy代理服务器
HTTPS相当于HTTP访问速度会稍微慢一点
实操
好嘟,实操一下吧,墨者学院_专注于网络安全人才培养 (mozhe.cn)
在这个上面貌似方便一点。
1.浏览器信息伪造
根据他的要求直接修改这( User-Agent:客户浏览器名称)就行
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.6.1 NetType/2G
好嘟,成功啦!
这里记一下User-Agent相关的东西:
浏览器通常使用的格式:
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>
其中:
<product>
产品识别码。
<product-version>
产品版本号。
<comment>
零个或多个关于组成产品信息的注释
eg:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
解析一下:
第一部分:Mozilla/5.0
默认都带上这个值
第二部分:(Windows NT 10.0; Win64; x64)
表示操作系统版本,Windows NT 10.0就是win10系统,Win64; x64表示的是64位系统
第三部分:AppleWebKit/537.36 (KHTML, like Gecko)
表示搜索引擎,也就是浏览器内核
第四部分:Chrome/79.0.3945.117 Safari/537.36
表示浏览器的版本
关于操作系统版本可以看这个:https://zhuanlan.zhihu.com/p/146290394
还有他其中提到的微信NetType:
从微信6.0开始,其内嵌的浏览器在User Agent字符串中增加了NetType字段用于标识客户端(手机)当前的网络环境,经测试,该字段至少有以下3个取值:
NetType/WIFI
NetType/2G
NetType/3G+
分别对应于Wifi、2G、3G以上网络环境。
因此,Web服务器可以据此识别客户端网络环境并提供有针对性的内容。
微信6.0内嵌浏览器User-Agent字符串增加了NetType字段_微信nettype_quark~的博客-CSDN博客
2.来源页伪造
又又付费之后……
他说只能从 google.com 来访问,要求还怪多的嘞,老样子。
这次需要修改的是
Referer:表明产生请求的网页URL。这个属性可以用来跟踪web请求是从什么网站来的。
直接把后面的 index.html 修改成 google.com
发送,得到key。
3.IP地址伪造(第1题)
常见的弱口令,查一下啊
这里用admin - admin
发现登录之后给了这么一段话:
同样的操作,我们只需要加一下:
X-Forwarded-For:127.0.0.1
重新发包,之后就得到key。
php中获取ip地址:
- 借助X-Forwarded-For获取