云计算百科
云计算领域专业知识百科平台

【信息收集】从GET到POST:破解登录表单的全流程

=目标:

  • 将浏览器数据代理至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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【信息收集】从GET到POST:破解登录表单的全流程
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!