关于defined() 's

admin 2017年5月3日21:36:25评论336 views字数 557阅读1分51秒阅读模式
摘要

很多php使用defined()来防止外部直接访问php文件,从而保证了只让内部php文件include等调用。如下面:

<?
//tag.php
if (!defined("X")) {
echo "You Cannot Access This Script Directly, Have a Nice Day.";
exit();
}
?>
这样的代码可以解决很多的安全问题,比如变量未定义[应该说在本文件内未定义]。

很多php使用defined()来防止外部直接访问php文件,从而保证了只让内部php文件include等调用。如下面:

<?
//tag.php
if (!defined("X")) {
echo "You Cannot Access This Script Directly, Have a Nice Day.";
exit();
}
?>

这样的代码可以解决很多的安全问题,比如变量未定义[应该说在本文件内未定义]。

但是这样的在本地包含漏洞前就没什么意义了。比如进来看一代码

common.php文件里:

if ( !defined('X') )
{
die('Do not access this file directly.');
}
if ( !isset($root_path) )
{
$root_path = './';
}
require_once($root_path . 'config.php');

如果没有!defined('X') 的限制那么我们,这里$root_path未定义导致了一个远程包含。

而在改脚本又存在一个update–>include的2次攻击导致的本地包含,那么我们可以通过这个本地包含漏洞包含common.php导致突破!defined('X'),转化为远程包含。

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年5月3日21:36:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于defined() 'shttps://cn-sec.com/archives/49674.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息