阅读:3573回复:0
理解php对象注入
◆0 背景
原文:http://securitycafe.ro/2015/01/05/understanding-php-object-injection/ php对象注入是一个非常常见的漏洞,这个类型的漏洞虽然有些难以利用,但仍旧非常危险,为了理解这个漏洞,请读者具备基础的php知识。 ◆1 漏洞案例 如果你觉得这是个渣渣洞,那么请看一眼这个列表,一些被审计狗挖到过该漏洞的系统,你可以发现都是一些耳熟能详的玩意(就国外来说) WordPress 3.6.1 Magento 1.9.0.1 Joomla 3.0.3 Ip board 3.3.5 除此之外等等一堆系统,八成可能大概在这些还有其他的php程序中还有很多这种类型的漏洞,所以不妨考虑坐下喝杯咖啡并且试着去理解这篇文章。 ◆1 PHP类和对象 类和变量是非常容易理解的php概念,打个比方,下面的代码在一个类中定义了一个变量和一个方法。 #!php 它创建了一个对象并且调用了 PrintVariable 函数,该函数会输出变量 variable。 如果想了解更多关于php面向对象编程的知识 请点: http://php.net/manual/zh/language.oop5.php ◆2 php magic方法 php类可能会包含一些特殊的函数叫magic函数,magic函数命名是以符号“__”开头的,比如 __construct, __destruct, __toString, __sleep, __wakeup 和其他的一些玩意。 这些函数在某些情况下会自动调用,比如: __construct 当一个对象创建时调用 (constructor) __destruct 当一个对象被销毁时调用 (destructor) __ toString当一个对象被当作一个字符串使用 为了更好的理解magic方法是如何工作的,让我们添加一个magic方法在我们的类中。 #!php |
|