没有要求,没有包含,没有网址重写,但脚本执行时没有在网址中

Maj*_*our 9 php apache debugging legacy-code

我试图在一些遗留代码中跟踪执行流程.我们正在访问一份报告

http://site.com/?nq=showreport&action=view
Run Code Online (Sandbox Code Playgroud)

这就是谜题:

  • index.php没有$_GET['nq']$_GET['action'](也没有 $_REQUEST),
  • index.php或其包含的任何来源,不包括showreport.php,
  • .htaccess没有网址重写

然而,showreport.php被执行.

我可以访问服务器上的cPanel(但没有apache配置文件),这是实时代码,我不能随意使用.

有什么可以让这种情况发生?我应该在哪里看?

更新
有趣的事情 - 在状态更新中向客户端发送此问题的链接以使他保持循环; 几分钟后,所有访问权被撤销,客户通知我项目被取消.我相信我已经采取了足够的谨慎措施,不要在代码实际存在的地方留下任何痕迹......

我感到宽慰,现在已经取消了我,但我也很想知道它什么!

谢谢大家的时间和帮助.

hak*_*kre 6

解析URL有"数百种"方法 - 在各种层(系统,httpd服务器,CGI脚本)中.因此,不可能专门用您提供的信息回答您的问题.

你留下了一个非常明显的提示"遗留代码".我假设你的意思是,你不想完全阅读代码,理解它甚至可以找到解析该参数的有问题的应用程序.

不过,如果你留下一些提示,那就是代码的"遗产":Age,PHP版本等等.这可以提供帮助.

它并不总是$_GET被用来访问这些值(同样如此$_REQUEST,它们是表兄弟).

我们来看看PHP 3手册镜像:

HTTP_GET_VARS

通过HTTP GET方法传递给当前脚本的关联变量数组.

脚本是否正在使用此数组?这只是一个猜测,这是一个有效的方法来访问这些参数很长一段时间.

无论如何,这绝不是你搜索的内容.在PHP中,这经常被误解和误用(字面上被滥用)称为寄存器全局 PHP手册.所以你可能只是在寻找$nq.

接下来,总是有请求uri和apache/environment/cgi变量.请参阅上面的PHP 3手册链接,其中列出了许多内容.将其与当前手册进行比较,以获得广泛的理解.

在任何情况下,您都grep可以使用多文件搜索(如果需要检查某些IDE中的遗留代码,Eclipse可以在一个文件中使用.)

所以在这一天结束时,你可能只是寻找一个串像nq,'nq',"nq"$nq.然后检查这个搜索带来了什么.基于字符串的搜索是您完全不知道的代码库的良好入口.