=目标:
将浏览器数据代理至BP的proxy模块。
将个人PHP的留言板项目首页登录数据包代理至BP,并转发至intrder模块,进行暴力破解。
免责声明:本文章内容仅用于个人网络安全知识学习与研究,严禁用于任何未经授权的攻击或非法活动,使用者需遵守相关法律法规,一切违法违规行为后果自负!
抓包:
由于自己的项目后端没有写加密,抓包后直接发现问题:明文传输
查看事件日志,大抵这也算是信息收集的一部分~
并且注意到,刚访问页面时抓包是get请求,提交数据后抓到的包才是后端代码中写的post请求
这种现象是由HTTP 请求的分工和网页交互流程决定的,本质上是 “页面加载” 与 “表单提交” 两种行为对应不同请求方法的结果,具体原因如下:
1. 刚进入页面时的 GET 请求:负责 “获取资源”
当你在浏览器中输入网址或点击链接进入登录页面时,浏览器会发送GET 请求,这是因为:
-
GET 请求的核心作用:从服务器获取资源(如 HTML 页面、CSS、JS、图片等)。
登录页面本身是一个网页(由 HTML、CSS、JS 等文件组成),浏览器需要通过 GET 请求向服务器 “索要” 这些资源,服务器收到 GET 请求后,会返回登录页面的 HTML 代码,浏览器再解析代码并渲染出登录界面(输入框、登录按钮等)。 -
为什么用 GET?
GET 是 HTTP 协议中默认的 “获取资源” 方法,它的语义是 “从服务器读取数据”,不会对服务器数据进行修改,适合用于请求静态资源(页面、图片等)或查询数据。
2. 点击登录按钮后的 POST 请求:负责 “提交数据”
当你填写账号密码并点击 “登录” 按钮时,触发的是表单提交行为,此时后端设计为 POST 请求,原因是:
-
POST 请求的核心作用:向服务器提交数据(如表单内容),并可能导致服务器数据被修改(如验证账号密码、创建会话等)。
登录功能需要将用户输入的账号、密码发送给服务器验证,这属于 “向服务器提交数据” 的行为,符合 POST 请求的语义(POST 更适合处理有副作用的操作,如提交、修改数据)。 -
为什么登录用 POST 而非 GET?
-
GET 请求的参数会暴露在 URL 中(如?username=xxx&password=xxx),安全性低,不适合传输敏感信息(密码)。
-
POST 请求的参数放在请求体中,相对更安全,且支持更大的数据量,适合传输表单数据。
-
3. 背后的技术逻辑:网页交互的 “两步走”
登录页面的交互流程本质是 “先加载页面,再提交数据” 的两步操作:
第一步:加载登录页面(GET)
浏览器发送 GET 请求 → 服务器返回登录页面的 HTML(包含表单标签<form>) → 浏览器渲染出带输入框和按钮的界面。
此时的<form>标签可能已经定义了提交方式为 POST(如<form method="post" action="/login">),但未点击按钮时,这个表单不会被提交。
第二步:提交登录数据(POST)
点击 “登录” 按钮 → 触发表单提交事件 → 浏览器根据<form>标签中method="post"的定义,向action指定的地址发送 POST 请求 → 请求体中携带账号、密码等数据 → 服务器验证并返回结果。
总结 :
-
GET 请求:用于 “获取登录页面资源”,是进入页面时的默认行为,目的是让浏览器渲染出可交互的界面。
-
POST 请求:用于 “提交登录数据”,是点击按钮后的主动操作,目的是将敏感信息发送给服务器验证。
这两种请求分别对应 “页面加载” 和 “数据提交” 两个阶段,分工明确,符合 HTTP 协议中 GET(读取)和 POST(提交)的设计语义。
暴力破解:
将抓到的包转发至intrder模块,进行暴力破解。
开始攻击,通过寻找到“字段长度”明显不同的字段,确定正确密码
E N D
评论前必须登录!
注册