墨者学院-通关攻略(持续更新持续改进)
网络安全
第一关、某防火墙默认口令
一、解题方法
打开靶场,打开靶场发现标题是天青汉马的防火墙。搜索是否存在默认口令, 可以找到默认账号密码 账号:useradmin 密码:venus.user 登录尝试,成功获取key
第二关、HTTP动作练习
一、基础知识
1、浏览器发送数据时、GET、POST两者方式的差异;
1.数据传输方式
-
GET:
-
数据通过URL传输,请求参数会附加在URL后面,格式为:
http://example.com/page?key1=value1&key2=value2
。 -
数据量有限制,因为URL的长度是有限的,通常不超过2048个字符。
-
-
POST:
-
数据通过请求体(Request Body)传输,不会显示在URL中。
-
数据量没有限制,可以传输大量数据。
-
2. 安全性
-
GET:
-
数据暴露在URL中,容易被记录在服务器日志、浏览器历史记录或代理服务器日志中,不安全。
-
不适合传输敏感信息,如密码、信用卡信息等。
-
-
POST:
-
数据在请求体中传输,不会显示在URL中,相对安全。
-
适合传输敏感信息,但仍然需要使用HTTPS等加密协议来进一步保护数据。
-
3. 缓存机制
-
GET:
-
请求可以被浏览器缓存,如果URL相同,浏览器可能会直接从缓存中读取数据,而不发送请求到服务器。
-
可以通过设置HTTP头(如
Cache-Control
)来控制缓存行为。
-
-
POST:
-
请求不会被浏览器缓存,每次请求都会发送到服务器。
-
适合用于提交表单数据或执行操作,因为这些操作通常不应该被缓存。
-
4. 历史记录
-
GET:
-
请求的URL会出现在浏览器的历史记录中,用户可以通过浏览器的后退按钮返回到之前的页面。
-
-
POST:
-
请求不会出现在浏览器的历史记录中,用户通过后退按钮返回时,浏览器通常会提示用户重新提交表单。
-
5. 书签功能
-
GET:
-
请求的URL可以被添加到书签中,方便用户以后访问。
-
-
POST:
-
请求不能被添加到书签中,因为请求体中的数据无法通过书签保存。
-
6. 数据类型
-
GET:
-
数据类型通常为文本,因为URL中的参数需要是文本格式。
-
-
POST:
-
数据类型可以是文本、文件等多种类型,适合上传文件等操作。
-
7. 用途
-
GET:
-
主要用于从服务器获取数据,如查询数据库、获取页面内容等。
-
通常用于无副作用的操作,即操作不会改变服务器的状态。
-
-
POST:
-
主要用于向服务器提交数据,如提交表单、上传文件、创建资源等。
-
通常用于有副作用的操作,即操作会改变服务器的状态。
-
8. HTTP方法幂等性
-
GET:
-
是幂等的,即多次请求相同URL的结果是相同的,不会对服务器产生额外影响。
-
-
POST:
-
不是幂等的,多次提交相同的表单可能会产生不同的结果,如多次创建相同的资源。
-
,限制数据长度的大小;
2、理解在PHP程序中$_REQUEST、$_GET、$_POST三者之间的区别;
-
GET
:适用于获取通过 URL 参数传递的数据,数据量小,安全性低,适合无副作用的操作。 -
POST
:适用于获取通过请求体传递的数据,数据量大,安全性高,适合有副作用的操作。 -
REQUEST
:提供了一种统一的方式来访问$_GET
、$_POST
和$_COOKIE
的数据,但需要谨慎使用,以避免潜在的安全问题。
3、了解不同浏览器通过GET方式传递数据时,限制数据长度的大小;
-
浏览器限制:Chrome 和 Edge 约为 2083 个字符,Firefox 约为 65536 个字符,Safari 约为 80000 个字符。
-
服务器限制:Apache 默认 8190 个字符,Nginx 默认 8190 个字符,IIS 默认 2083 个字符。
-
实际建议:尽量限制数据量,避免超过 2083 个字符,必要时使用
POST
方法或分页/分块传递。
二、解题方法
burp直接修改请求方法发包即可得到key
https://blog.csdn.net/weixin_64551911/article/details/126216036
手工改参数要注意一下几点:
1、将请求头修改为post,并将content放入请求体,并在请求头中添加Content-Type:application/x-www-form-urlencoded
2、把数据内容复制到请求体中(最下面)
-
GET:数据通过URL传输,请求参数会附加在URL后面,格式为:
GET/info.php?content=Vm0wd2QyUXl
。URL的长度是有限的,通常不超过2048个字符适合较少数据。 -
POST:数据通过请求体传输,不会显示在URL中。数据量没有限制,可以传输大量数据。
第三关、投票常见漏洞分析溯源
1、User-Agent的理解
User-Agent 是 HTTP 请求头中的一个字段,用于标识发起请求的客户端(通常是浏览器)的类型、版本、操作系统等信息。服务器可以根据这个信息来优化页面显示或进行其他处理。
-
作用:
-
浏览器识别:服务器可以根据 User-Agent 判断客户端的浏览器类型和版本,从而提供兼容的页面内容。
-
设备识别:服务器可以根据 User-Agent 判断客户端的设备类型(如桌面、移动设备等),从而提供适配的页面布局。
-
爬虫识别:搜索引擎爬虫通常有特定的 User-Agent,服务器可以根据这些信息区分正常用户和爬虫,进行相应的处理。
-
2、X-Forwarded-for的理解
X-Forwarded-For 是一个 HTTP 请求头字段,用于标识原始请求的 IP 地址。当请求通过代理服务器或负载均衡器时,原始请求的 IP 地址可能会被隐藏,X-Forwarded-For 字段可以用来记录原始 IP 地址。
-
作用:
-
记录原始 IP:在多层代理或负载均衡的环境中,服务器可以通过 X-Forwarded-For 字段获取原始请求的 IP 地址。
-
安全审计:服务器可以根据 X-Forwarded-For 字段进行安全审计和日志记录
-
解题方法
1.这个时候我们就可以更改user-agent的值修改成微信模式的Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN;
2.添加x-forwarded-for:10.120.1.1,IP地址任意选择,将IP地址后两位设置成变量;
3.发送到Intruder模块进行爆破,刷新投票界面即可