拦截PHP可利用函数的使用

拦截PHP可利用函数的使用,php,function,Php,Function,我想开发代码,截取发送到PHP可利用函数(如eval())的数据。但是,我的代码不应以任何方式编辑或接触eval存在的代码 例如: 我使用拦截器代码创建了一个PHP文件,并使用eval()在目标PHP页面内使用“require”(或任何其他PHP可利用函数)调用它。怎样才能做到这一点呢?对我来说,听起来好像你想写一个PHP扩展,它可以拦截一些内置函数。我不知道一个好的教程,所以你想自己使用你最喜欢的搜索引擎。还有一个提示:已经为var\u dump()、print\u r()等做了类似的操作。因

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

例如:


我使用拦截器代码创建了一个PHP文件,并使用eval()在目标PHP页面内使用“require”(或任何其他PHP可利用函数)调用它。怎样才能做到这一点呢?

对我来说,听起来好像你想写一个PHP扩展,它可以拦截一些内置函数。我不知道一个好的教程,所以你想自己使用你最喜欢的搜索引擎。还有一个提示:已经为
var\u dump()
print\u r()
等做了类似的操作。因此,也许您可以查看源代码并玩转它。祝你好运。

首先,PHP中的所有函数都可以用来开发系统


为了以这种方式改变PHP的行为,您需要修改PHP解释器本身——特别是您需要或PECL(或者自己重写解释器)。或者运行translataion程序将引用(您的“可利用”函数列表)重新映射到包装函数(然后在include文件中指定这些包装器)。

是扩展名,但它必须在用户空间中,而不是在PHP核心中。因此,我应该能够只使用require并让扩展工作。我不希望用户使用我的PHP版本,并且必须在他们的系统上重新编译PHP。无需重新编译PHP:请参阅xdebug安装指南:。这是与PHP一起加载的东西。好吧……但是没有什么可能只在用户空间方面起作用吗?我不知道。也许从PHP5.3开始,您可以使用名称空间创建自己的eval函数,该函数封装内置eval函数并在其中添加日志记录。但这只是一个想法……翻译程序如何将可利用函数的引用重新映射到包装函数?你能详细说明一下吗?某些函数不可利用或不危险的原因是,即使在接收到未初始化的基于攻击的输入的情况下,它们也不会执行任何危险的操作。e、 g.打印$str;不能是接收器函数(据我所知),因为它最多只显示字符串“str”内容。我更感兴趣的是那些可能造成伤害或让用户获得比系统所允许的更多知识的功能。“因为它最多只显示字符串‘str’content”,这足以窃取会话cookie并劫持会话。翻译程序?sed的/eval(/wrap_eval(/'somefile.php>somefile.php