PHP Eval函数参数限制在16个字符
PHP代码
<?php $param = $_REQUEST['param']; if ( strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false ) { eval($param); } ?> # 部署环境属于ubuntu系统
通过GET传参绕过
由于是接收param参数,并且在最后面通过eval执行,所以我们可以控制参数执行一些简单的命令。比如phpinfo();
我们学习过eval是PHP的代码执行方法,并且在Linux系统中是可以通过反引号来执行命令的。所以我们是不是可以通过eval + 反引号 吧代码执行转变为命令执行呢?
我们发现可以这样做,通过echo来输出结果。但是此时如果想写一句话木马就不行了,因为PHP代码中有限制长度。
所以我们是不是可以通过命名一个符合要求的新参数,并且通过GET或者POST传递参数,让eval执行传递的新参数,然后我们通过给新参数定义不同的内容来执行命令,那么不就可以突破