2011-08-13 34 views
2

我想开发代码,我想拦截正在发送到PHP可利用函数(如eval())的数据。但是,我的代码不应该编辑或触摸eval以任何方式存在的代码。拦截PHP的利用可利用的功能

举个例子:

我创建一个PHP文件,我的拦截器代码,并使用“规定”与eval()函数(或任何其他可开发的PHP函数)来调用它的目标PHP页面中。这怎么可能成为可能?

回答

2

首先,PHP中的所有功能都可用于开发系统。

为了以这种方式改变PHP的行为,您需要修改PHP解释器本身 - 具体而言,您需要使用interceptrunkit PECL(或自己重写解释器)。或者运行一个翻译程序来重新引用(您的“可利用”函数列表)以包装函数(然后在包含文件中指定这些包装)。

+0

这个翻译程序如何正确地工作以重新映射引用可利用函数来包装函数?你能否详细说明一下? 某些功能无法利用或危险的原因是因为即使在接收到未经协商的基于攻击的输入的情况下,它们也不会执行任何危险操作。例如打印$ str;不能是汇的函数(据我所知)最多只能显示字符串'str'的内容。我对可能造成伤害或允许用户获得比系统允许的更多知识的功能更具体地感兴趣。 – user890928

+0

“,因为它最多只显示字符串'str'content”,这足以窃取会话cookie并劫持会话。翻译计划? sed's/eval \(/ wrap_eval \(/'somefile.php> somefile.php – symcbean

0

对我来说,听起来好像你想写一个PHP扩展,它可以拦截一些buid-in函数。我不知道一个好的教程,所以你想自己使用你最喜欢的搜索引擎。还有一个提示:xdebug已经为var_dump()print_r()等做了这样的事情。所以,也许你可以检查它的来源和玩具。祝你好运。

+0

是的扩展,但它必须在用户空间,而不是在PHP内核。所以我应该能够使用require并让扩展工作。我不希望用户使用我的PHP版本,而必须在他们的系统上重新编译PHP。 – user890928

+0

无需重新编译PHP:查看xdebug安装指南:http://xdebug.org/docs/install。这是与PHP一起加载的东西。 – Shi

+0

好的...但是有没有可能的只有在用户空间的东西? – user890928