phpyun防护崩坏

因为很久没好好写什么文章了,原本打算这篇也好好写的但是一开始就直接想着如何简化了,很多代码层的东西都没去细说。

文章开头我先简单给不懂php的朋友讲解一些东西

include 和require的区别

include 引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。

require 引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
简单好理解就是上面这样
具体点可以参考这里
https://www.runoob.com/w3cnote/php-different-include-and-require.html

问题分析

phpyun使用最初的360webscan那个脚本和自己类似360的一个脚本(很变态,有点搞不定)但是他的两个脚本加载方式是这样的

include(CONFIG_PATH.'db.safety.php');
if(is_file(LIB_PATH.'webscan360/360safe/360webscan.php')){
	require_once(LIB_PATH.'webscan360/360safe/360webscan.php');
}

这里采用的是inclde去包含但是如果我们将这个文件删除后,waf功能失效且不影响代码运行,而且有意思的是

function quotesGPC() {
	if(!get_magic_quotes_gpc()){
    $_POST = array_map("addSlash", $_POST);
		$_GET = array_map("addSlash", $_GET);
		$_COOKIE = array_map("addSlash", $_COOKIE);
	}
}

一般我们遇见的cms都会将自己的伪gpc写在全局文件类似common或者global文件中但是phpyun是将这种全局伪gpc写在db.safe中

本地复现

1 个赞

我总感觉你话没有说完,结束的很突然 :joy:

1 个赞

害,是的。这不是强行结束嘛

强行装逼,最为致命!