如何使用 curl 阻止 PHP 重定向并获取原始响应内容

9次阅读

如何使用 curl 阻止 PHP 重定向并获取原始响应内容

通过命令行工具 curl(默认不自动跳转)可直接获取含敏感信息的原始 html 响应,绕过 php 的 header(“location: …”) 重定向,无需修改服务端代码或拥有网站控制权。

在 Web 开发与安全测试中,常遇到类似以下 php 代码:

 
this is sensitive information

该脚本虽调用了 header(“Location: …”) 发送 http 302 重定向响应头,但PHP 不会终止脚本执行——后续 html 内容(如

This is sensitive information

)仍会被输出到响应体中。然而,浏览器收到重定向头后会立即跳转,导致用户无法看到这部分“被隐藏”的敏感内容。

关键点在于:重定向由客户端(浏览器)执行,而非服务端强制拦截输出。因此,只要使用一个不自动处理重定向的 HTTP 客户端,就能捕获完整的原始响应体(含状态码 302 + 响应头 + 响应体中的 HTML 内容)。

✅ 推荐方案:使用 curl(默认禁用自动跳转)

立即学习PHP免费学习笔记(深入)”;

curl http://example.com/vulnerable.php

此时 curl 将返回:

  • HTTP 状态行(如 HTTP/1.1 302 Found)
  • Location: page2.php 响应头
  • 以及紧随其后的原始响应体
    This is sensitive information

⚠️ 注意事项:

  • curl 默认不跟随重定向(即不发送第二次请求),因此能完整捕获服务端原始输出;
  • 若需显式确认行为,可加 -v 参数查看详细请求/响应过程:
    curl -v http://example.com/vulnerable.php
  • 切勿使用 -L(或 –location)参数——它会启用自动跳转,导致你最终只拿到 page2.php 的内容,丢失原始敏感信息;
  • 此方法完全在客户端侧实现,无需服务器权限、不修改代码、不依赖浏览器插件,适用于渗透测试、CTF 或第三方站点调试场景。

? 补充说明:若目标站点启用了 X-Content-Type-Options: nosniff 或其他安全头,不影响本方案有效性——我们关注的是响应体的原始字节流,而非浏览器渲染逻辑。

总结:当无法控制服务端却需观察重定向前的完整响应时,curl 是最轻量、可靠且符合 HTTP 规范的解决方案。

text=ZqhQzanResources